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',
];