Skip to content

Commit a34106e

Browse files
committed
Refactored
1 parent aabdf9e commit a34106e

File tree

1 file changed

+56
-62
lines changed

1 file changed

+56
-62
lines changed

DependencyInjection/HttplugExtension.php

Lines changed: 56 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Http\HttplugBundle\ClientFactory\DummyClient;
66
use Symfony\Component\Config\FileLocator;
77
use Symfony\Component\DependencyInjection\ContainerBuilder;
8+
use Symfony\Component\DependencyInjection\Definition;
89
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
910
use Symfony\Component\DependencyInjection\Reference;
1011
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
@@ -92,73 +93,66 @@ protected function configureClients(ContainerBuilder $container, array $config)
9293
}
9394
}
9495

96+
/**
97+
* @param ContainerBuilder $container
98+
* @param array $config
99+
*/
95100
protected function configurePlugins(ContainerBuilder $container, array $config)
96101
{
97-
if ($config['authentication']['enabled']) {
98-
$container->getDefinition('httplug.plugin.authentication')
99-
->replaceArgument(0, new Reference($config['authentication']['authentication']));
100-
} else {
101-
$container->removeDefinition('httplug.plugin.authentication');
102-
}
103-
104-
if ($config['cache']['enabled']) {
105-
$container->getDefinition('httplug.plugin.cache')
106-
->replaceArgument(0, new Reference($config['cache']['cache_pool']))
107-
->replaceArgument(1, new Reference($config['cache']['stream_factory']))
108-
->replaceArgument(2, $config['cache']['config']);
109-
} else {
110-
$container->removeDefinition('httplug.plugin.cache');
111-
}
112-
113-
if ($config['cookie']['enabled']) {
114-
$container->getDefinition('httplug.plugin.cookie')
115-
->replaceArgument(0, new Reference($config['cookie']['cookie_jar']));
116-
} else {
117-
$container->removeDefinition('httplug.plugin.cookie');
118-
}
119-
120-
if ($config['decoder']['enabled']) {
121-
$container->getDefinition('httplug.plugin.decoder')
122-
->replaceArgument(0, $config['decoder']['use_content_encoding']);
123-
} else {
124-
$container->removeDefinition('httplug.plugin.decoder');
125-
}
126-
127-
if ($config['history']['enabled']) {
128-
$container->getDefinition('httplug.plugin.history')
129-
->replaceArgument(0, new Reference($config['history']['journal']));
130-
} else {
131-
$container->removeDefinition('httplug.plugin.history');
132-
}
133-
134-
if ($config['logger']['enabled']) {
135-
$container->getDefinition('httplug.plugin.logger')
136-
->replaceArgument(0, new Reference($config['logger']['logger']))
137-
->replaceArgument(1, new Reference($config['logger']['formatter']));
138-
} else {
139-
$container->removeDefinition('httplug.plugin.logger');
140-
}
141-
142-
if ($config['redirect']['enabled']) {
143-
$container->getDefinition('httplug.plugin.redirect')
144-
->replaceArgument(0, $config['redirect']['preserve_header'])
145-
->replaceArgument(1, $config['redirect']['use_default_for_multiple']);
146-
} else {
147-
$container->removeDefinition('httplug.plugin.redirect');
102+
foreach ($config as $name => $pluginConfig) {
103+
$pluginId = 'httplug.plugin.'.$name;
104+
if ($config[$name]['enabled']) {
105+
$def = $container->getDefinition($pluginId);
106+
$this->configurePluginByName($name, $def, $pluginConfig);
107+
} else {
108+
$container->removeDefinition($pluginId);
109+
}
148110
}
149111

150-
if ($config['retry']['enabled']) {
151-
$container->getDefinition('httplug.plugin.retry')
152-
->replaceArgument(0, $config['retry']['retry']);
153-
} else {
154-
$container->removeDefinition('httplug.plugin.retry');
155-
}
112+
}
156113

157-
if ($config['stopwatch']['enabled']) {
158-
$container->getDefinition('httplug.plugin.stopwatch')
159-
->replaceArgument(0, new Reference($config['stopwatch']['stopwatch']));
160-
} else {
161-
$container->removeDefinition('httplug.plugin.stopwatch');
114+
/**
115+
* @param string $name
116+
* @param Definition $definition
117+
* @param array $config
118+
*/
119+
private function configurePluginByName($name, Definition $definition, array $config)
120+
{
121+
switch ($name) {
122+
case 'authentication':
123+
$definition->replaceArgument(0, new Reference($config['authentication']));
124+
break;
125+
case 'cache':
126+
$definition
127+
->replaceArgument(0, new Reference($config['cache_pool']))
128+
->replaceArgument(1, new Reference($config['stream_factory']))
129+
->replaceArgument(2, $config['config']);
130+
break;
131+
case 'cookie':
132+
$definition->replaceArgument(0, new Reference($config['cookie_jar']));
133+
break;
134+
case 'decoder':
135+
$definition->addArgument($config['use_content_encoding']);
136+
break;
137+
case 'history':
138+
$definition->replaceArgument(0, new Reference($config['journal']));
139+
break;
140+
case 'logger':
141+
$definition
142+
->replaceArgument(0, new Reference($config['logger']))
143+
->replaceArgument(1, new Reference($config['formatter']));
144+
break;
145+
case 'redirect':
146+
$definition
147+
->addArgument($config['preserve_header'])
148+
->addArgument($config['use_default_for_multiple']);
149+
break;
150+
case 'retry':
151+
$definition->addArgument($config['retry']);
152+
break;
153+
case 'stopwatch':
154+
$definition->replaceArgument(0, new Reference($config['stopwatch']));
155+
break;
162156
}
163157
}
164158
}

0 commit comments

Comments
 (0)