From 88013093a3134ac876acd35d1fb64f0da1f6690c Mon Sep 17 00:00:00 2001 From: David Buchmann Date: Sun, 7 Aug 2016 13:09:03 +0200 Subject: [PATCH] fix plugin instantiation --- CHANGELOG.md | 6 +++++- DependencyInjection/Configuration.php | 5 +++-- DependencyInjection/HttplugExtension.php | 18 +++++++++++++----- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8baaa2d..2c7e1b82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,14 @@ ## UNRELEASED +### Fixed + +- decoder, redirect and retry plugins can now be used and no longer trigger an error because of incorrect constructor arguments. + ### Added - Support for BatchClient -- The stopwatch plugin in included by default when using profiling. +- The stopwatch plugin in included by default when using profiling. ### Changed diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index f6ef7e4f..8bea9e7c 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -92,6 +92,7 @@ public function getConfigTreeBuilder() return $v; }) ->end() + ->fixXmlConfig('client') ->children() ->arrayNode('main_alias') ->addDefaultsIfNotSet() @@ -150,7 +151,7 @@ public function getConfigTreeBuilder() return $treeBuilder; } - protected function configureClients(ArrayNodeDefinition $root) + private function configureClients(ArrayNodeDefinition $root) { $root->children() ->arrayNode('clients') @@ -196,7 +197,7 @@ protected function configureClients(ArrayNodeDefinition $root) /** * @param ArrayNodeDefinition $root */ - protected function configurePlugins(ArrayNodeDefinition $root) + private function configurePlugins(ArrayNodeDefinition $root) { $root->children() ->arrayNode('plugins') diff --git a/DependencyInjection/HttplugExtension.php b/DependencyInjection/HttplugExtension.php index 0e3c5315..9ec64a3d 100644 --- a/DependencyInjection/HttplugExtension.php +++ b/DependencyInjection/HttplugExtension.php @@ -145,7 +145,9 @@ private function configurePluginByName($name, Definition $definition, array $con $definition->replaceArgument(0, new Reference($config['cookie_jar'])); break; case 'decoder': - $definition->addArgument($config['use_content_encoding']); + $definition->addArgument([ + 'use_content_encoding' => $config['use_content_encoding'], + ]); break; case 'history': $definition->replaceArgument(0, new Reference($config['journal'])); @@ -157,16 +159,22 @@ private function configurePluginByName($name, Definition $definition, array $con } break; case 'redirect': - $definition - ->addArgument($config['preserve_header']) - ->addArgument($config['use_default_for_multiple']); + $definition->addArgument([ + 'preserve_header' => $config['preserve_header'], + 'use_default_for_multiple' => $config['use_default_for_multiple'], + ]); break; case 'retry': - $definition->addArgument($config['retry']); + $definition->addArgument([ + 'retries' => $config['retry'], + ]); break; case 'stopwatch': $definition->replaceArgument(0, new Reference($config['stopwatch'])); break; + + default: + throw new \InvalidArgumentException(sprintf('Internal exception: Plugin %s is not handled', $name)); } }