diff --git a/CHANGELOG.md b/CHANGELOG.md index a657a735..18e22ca0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ The change log describes what is "Added", "Removed", "Changed" or "Fixed" between each release. +## Unreleased + +### Added + +- Allow to configure the `QueryDefaultsPlugin` + ## 1.12.0 - 2018-10-25 ### Added diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 88426e56..6a1a36fc 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -390,6 +390,19 @@ private function createClientPluginNode() ->end() ->end() ->end() + ->arrayNode('query_defaults') + ->canBeEnabled() + ->info('Sets query parameters to default value if they are not present in the request.') + ->fixXmlConfig('parameter') + ->children() + ->arrayNode('parameters') + ->info('List of query parameters. Names and values must not be url encoded as the plugin will encode them.') + ->normalizeKeys(false) + ->useAttributeAsKey('name') + ->prototype('scalar')->end() + ->end() + ->end() + ->end() ->end() ->end(); diff --git a/DependencyInjection/HttplugExtension.php b/DependencyInjection/HttplugExtension.php index 943d6259..c88e2849 100644 --- a/DependencyInjection/HttplugExtension.php +++ b/DependencyInjection/HttplugExtension.php @@ -232,6 +232,11 @@ private function configurePluginByName($name, Definition $definition, array $con break; + case 'query_defaults': + $definition->replaceArgument(0, $config['parameters']); + + break; + default: throw new \InvalidArgumentException(sprintf('Internal exception: Plugin %s is not handled', $name)); } diff --git a/Resources/config/plugins.xml b/Resources/config/plugins.xml index b9b3f2dc..53f33fa6 100644 --- a/Resources/config/plugins.xml +++ b/Resources/config/plugins.xml @@ -53,6 +53,9 @@ + + + diff --git a/Tests/Unit/DependencyInjection/HttplugExtensionTest.php b/Tests/Unit/DependencyInjection/HttplugExtensionTest.php index e625addb..801e2d61 100644 --- a/Tests/Unit/DependencyInjection/HttplugExtensionTest.php +++ b/Tests/Unit/DependencyInjection/HttplugExtensionTest.php @@ -102,6 +102,11 @@ public function testClientPlugins() 'headers' => ['X-FOO'], ], ], + [ + 'query_defaults' => [ + 'parameters' => ['locale' => 'en'], + ], + ], [ 'authentication' => [ 'my_basic' => [ @@ -129,6 +134,7 @@ public function testClientPlugins() 'httplug.client.acme.plugin.header_defaults', 'httplug.client.acme.plugin.header_set', 'httplug.client.acme.plugin.header_remove', + 'httplug.client.acme.plugin.query_defaults', 'httplug.client.acme.authentication.my_basic', 'httplug.client.acme.plugin.cache', ];