Skip to content

Commit 4a019f5

Browse files
committed
Added config for cache plugin
1 parent c258776 commit 4a019f5

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

DependencyInjection/Configuration.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public function getConfigTreeBuilder()
2727
$rootNode = $treeBuilder->root('httplug');
2828

2929
$this->configureClients($rootNode);
30+
$this->configurePlugins($rootNode);
3031

3132
$rootNode
3233
->validate()
@@ -108,4 +109,32 @@ protected function configureClients(ArrayNodeDefinition $root)
108109
->end()
109110
->end();
110111
}
112+
113+
/**
114+
* @param ArrayNodeDefinition $root
115+
*/
116+
protected function configurePlugins(ArrayNodeDefinition $root)
117+
{
118+
$root->children()
119+
->arrayNode('plugins')
120+
->addDefaultsIfNotSet()
121+
->children()
122+
->arrayNode('cache')
123+
->canBeEnabled()
124+
->addDefaultsIfNotSet()
125+
->children()
126+
->scalarNode('cache_pool')->isRequired()->cannotBeEmpty()->end()
127+
->scalarNode('stream_factory')->cannotBeEmpty()->defaultValue('httplug.stream_factory')->end()
128+
->arrayNode('config')
129+
->children()
130+
->scalarNode('default_ttl')->defaultNull()->end()
131+
->scalarNode('respect_cache_headers')->defaultTrue()->end()
132+
->end()
133+
->end()
134+
->end()
135+
->end() // End cache plugin
136+
->end()
137+
->end()
138+
->end();
139+
}
111140
}

DependencyInjection/HttplugExtension.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public function load(array $configs, ContainerBuilder $container)
4949
foreach ($config['main_alias'] as $type => $id) {
5050
$container->setAlias(sprintf('httplug.%s', $type), $id);
5151
}
52+
$this->configurePlugins($container, $config['plugins']);
5253
$this->configureClients($container, $config);
5354
}
5455

@@ -90,4 +91,16 @@ protected function configureClients(ContainerBuilder $container, array $config)
9091
$container->setAlias('httplug.client.default', 'httplug.client.'.$first);
9192
}
9293
}
94+
95+
protected function configurePlugins(ContainerBuilder $container, array $config)
96+
{
97+
if ($config['cache']['enabled']) {
98+
$container->getDefinition('httplug.plugin.cache')
99+
->replaceArgument(0, new Reference($config['cache']['cache_pool']))
100+
->replaceArgument(1, new Reference($config['cache']['stream_factory']))
101+
->replaceArgument(2, $config['cache']['config']);
102+
} else {
103+
$container->removeDefinition('httplug.plugin.cache');
104+
}
105+
}
93106
}

Resources/config/plugins.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
55

66
<services>
7+
<service id="httplug.plugin.cache" class="Http\Client\Plugin\CachePlugin" public="false">
8+
<argument />
9+
<argument />
10+
<argument />
11+
</service>
712
<service id="httplug.plugin.content_length" class="Http\Client\Plugin\ContentLengthPlugin" public="false" />
813
<service id="httplug.plugin.decoder" class="Http\Client\Plugin\DecoderPlugin" public="false" />
914
<service id="httplug.plugin.error" class="Http\Client\Plugin\ErrorPlugin" public="false" />

0 commit comments

Comments
 (0)