Skip to content

Commit 9743e36

Browse files
authored
Make the cache service configurable and "disableable" (#647)
1 parent e38ba1a commit 9743e36

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

src/DependencyInjection/AsyncAwsExtension.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,10 @@ private function addServiceDefinition(ContainerBuilder $container, string $name,
9797
$httpClient = new Reference('http_client', ContainerInterface::NULL_ON_INVALID_REFERENCE);
9898
}
9999

100-
if ((null === $credentialServiceId = $config['credential_provider']) && \class_exists(SymfonyCacheProvider::class) && \interface_exists(CacheInterface::class)) {
100+
// If no credential provider is specified, lets configured a credentials provider with cache.
101+
$hasCacheClasses = \class_exists(SymfonyCacheProvider::class) && \interface_exists(CacheInterface::class);
102+
$credentialServiceId = $config['credential_provider'];
103+
if (null === $credentialServiceId && null !== $config['credential_provider_cache'] && $hasCacheClasses) {
101104
$credentialServiceId = 'async_aws.credential';
102105
if (!$container->hasDefinition($credentialServiceId)) {
103106
$container->register($credentialServiceId, CredentialProvider::class)
@@ -108,14 +111,13 @@ private function addServiceDefinition(ContainerBuilder $container, string $name,
108111
->setDecoratedService($credentialServiceId)
109112
->setArguments([
110113
new Reference('async_aws.credential.cache.inner'),
111-
new Reference('cache.app'),
114+
new Reference($config['credential_provider_cache']),
112115
]);
113116

114117
$container->register('async_aws.credential.memory', CacheProvider::class)
115118
->setDecoratedService($credentialServiceId)
116119
->setArguments([
117120
new Reference('async_aws.credential.memory.inner'),
118-
new Reference('cache.app'),
119121
]);
120122
}
121123
}

src/DependencyInjection/Configuration.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public function getConfigTreeBuilder()
2222
->children()
2323
->booleanNode('register_service')->info('If set to false, no services will be created.')->defaultTrue()->end()
2424
->scalarNode('credential_provider')->info('A service name for AsyncAws\Core\Credentials\CredentialProvider.')->defaultNull()->end()
25+
->scalarNode('credential_provider_cache')->info('A service implementing Symfony\Contracts\Cache\CacheInterface to efficiently cache credentials.')->defaultValue('cache.app')->end()
2526
->scalarNode('http_client')->info('A service name for Symfony\Contracts\HttpClient\HttpClientInterface.')->end()
2627
->scalarNode('logger')->info('A service name for Psr\Log\LoggerInterface.')->end()
2728
->arrayNode('config')->info('Default config that will be merged will all services.')->normalizeKeys(false)->prototype('variable')->end()->end()

tests/Unit/DependencyInjection/ConfigurationTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public function testDefaultValues(): void
2626
], [
2727
'register_service' => true,
2828
'credential_provider' => null,
29+
'credential_provider_cache' => 'cache.app',
2930
'config' => [],
3031
'clients' => [],
3132
'secrets' => [

0 commit comments

Comments
 (0)