|
4 | 4 |
|
5 | 5 | namespace AsyncAws\Symfony\Bundle\DependencyInjection;
|
6 | 6 |
|
| 7 | +use AsyncAws\Core\Credentials\CacheProvider; |
| 8 | +use AsyncAws\Core\Credentials\ChainProvider; |
| 9 | +use AsyncAws\Core\Credentials\CredentialProvider; |
| 10 | +use AsyncAws\Core\Credentials\SymfonyCacheProvider; |
7 | 11 | use AsyncAws\Symfony\Bundle\Secrets\CachedEnvVarLoader;
|
8 | 12 | use AsyncAws\Symfony\Bundle\Secrets\SsmVault;
|
9 | 13 | use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
|
@@ -93,9 +97,32 @@ private function addServiceDefinition(ContainerBuilder $container, string $name,
|
93 | 97 | $httpClient = new Reference('http_client', ContainerInterface::NULL_ON_INVALID_REFERENCE);
|
94 | 98 | }
|
95 | 99 |
|
| 100 | + if ((null === $credentialServiceId = $config['credential_provider']) && \class_exists(SymfonyCacheProvider::class) && \interface_exists(CacheInterface::class)) { |
| 101 | + $credentialServiceId = 'async_aws.credential'; |
| 102 | + if (!$container->hasDefinition($credentialServiceId)) { |
| 103 | + $container->register($credentialServiceId, CredentialProvider::class) |
| 104 | + ->setFactory([ChainProvider::class, 'createDefaultChain']) |
| 105 | + ->setArguments([$httpClient, $logger]); |
| 106 | + |
| 107 | + $container->register('async_aws.credential.cache', SymfonyCacheProvider::class) |
| 108 | + ->setDecoratedService($credentialServiceId) |
| 109 | + ->setArguments([ |
| 110 | + new Reference('async_aws.credential.cache.inner'), |
| 111 | + new Reference('cache.app'), |
| 112 | + ]); |
| 113 | + |
| 114 | + $container->register('async_aws.credential.memory', CacheProvider::class) |
| 115 | + ->setDecoratedService($credentialServiceId) |
| 116 | + ->setArguments([ |
| 117 | + new Reference('async_aws.credential.memory.inner'), |
| 118 | + new Reference('cache.app'), |
| 119 | + ]); |
| 120 | + } |
| 121 | + } |
| 122 | + |
96 | 123 | $definition = new Definition($clientClass);
|
97 | 124 | $definition->addArgument($config['config']);
|
98 |
| - $definition->addArgument(isset($config['credential_provider']) ? new Reference($config['credential_provider']) : null); |
| 125 | + $definition->addArgument($credentialServiceId ? new Reference($credentialServiceId) : null); |
99 | 126 | $definition->addArgument($httpClient);
|
100 | 127 | $definition->addArgument($logger);
|
101 | 128 | $container->setDefinition(sprintf('async_aws.client.%s', $name), $definition);
|
@@ -145,7 +172,7 @@ private function registerEnvLoader(ContainerBuilder $container, array $config):
|
145 | 172 | throw new InvalidConfigurationException(sprintf('You have enabled "async_aws.secrets.cache" but the "symfony/cache" package is not installed. Try running "composer require symfony/cache"'));
|
146 | 173 | }
|
147 | 174 |
|
148 |
| - $container->Register(CachedEnvVarLoader::class) |
| 175 | + $container->register(CachedEnvVarLoader::class) |
149 | 176 | ->setDecoratedService(SsmVault::class)
|
150 | 177 | ->setArguments([
|
151 | 178 | new Reference(CachedEnvVarLoader::class . '.inner'),
|
|
0 commit comments