diff --git a/composer.json b/composer.json
index 50efb6d8..8c61e378 100644
--- a/composer.json
+++ b/composer.json
@@ -46,9 +46,9 @@
"php-http/curl-client": "<2.0"
},
"require-dev": {
- "guzzlehttp/psr7": "^1.0",
"matthiasnoback/symfony-dependency-injection-test": "^4.0",
"nyholm/nsa": "^1.1",
+ "nyholm/psr7": "^1.2.1",
"php-http/cache-plugin": "^1.7",
"php-http/guzzle6-adapter": "^1.1.1 || ^2.0.1",
"php-http/mock-client": "^1.2",
diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php
index 424fac67..e200ad81 100644
--- a/src/DependencyInjection/Configuration.php
+++ b/src/DependencyInjection/Configuration.php
@@ -120,9 +120,16 @@ public function getConfigTreeBuilder()
->info('Configure which service the main alias point to.')
->children()
->scalarNode('client')->defaultValue('httplug.client.default')->end()
+ ->scalarNode('psr18_client')->defaultValue('httplug.psr18_client.default')->end()
->scalarNode('message_factory')->defaultValue('httplug.message_factory.default')->end()
->scalarNode('uri_factory')->defaultValue('httplug.uri_factory.default')->end()
->scalarNode('stream_factory')->defaultValue('httplug.stream_factory.default')->end()
+ ->scalarNode('psr17_request_factory')->defaultValue('httplug.psr17_request_factory.default')->end()
+ ->scalarNode('psr17_response_factory')->defaultValue('httplug.psr17_response_factory.default')->end()
+ ->scalarNode('psr17_stream_factory')->defaultValue('httplug.psr17_stream_factory.default')->end()
+ ->scalarNode('psr17_uri_factory')->defaultValue('httplug.psr17_uri_factory.default')->end()
+ ->scalarNode('psr17_uploaded_file_factory')->defaultValue('httplug.psr17_uploaded_file_factory.default')->end()
+ ->scalarNode('psr17_server_request_factory')->defaultValue('httplug.psr17_server_request_factory.default')->end()
->end()
->end()
->arrayNode('classes')
@@ -130,9 +137,16 @@ public function getConfigTreeBuilder()
->info('Overwrite a service class instead of using the discovery mechanism.')
->children()
->scalarNode('client')->defaultNull()->end()
+ ->scalarNode('psr18_client')->defaultNull()->end()
->scalarNode('message_factory')->defaultNull()->end()
->scalarNode('uri_factory')->defaultNull()->end()
->scalarNode('stream_factory')->defaultNull()->end()
+ ->scalarNode('psr17_request_factory')->defaultNull()->end()
+ ->scalarNode('psr17_response_factory')->defaultNull()->end()
+ ->scalarNode('psr17_stream_factory')->defaultNull()->end()
+ ->scalarNode('psr17_uri_factory')->defaultNull()->end()
+ ->scalarNode('psr17_uploaded_file_factory')->defaultNull()->end()
+ ->scalarNode('psr17_server_request_factory')->defaultNull()->end()
->end()
->end()
->arrayNode('profiling')
diff --git a/src/Resources/config/services.xml b/src/Resources/config/services.xml
index 194921b8..d97d1215 100644
--- a/src/Resources/config/services.xml
+++ b/src/Resources/config/services.xml
@@ -46,6 +46,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -55,8 +80,8 @@
-
-
+
+
diff --git a/tests/Resources/Fixtures/config/full.php b/tests/Resources/Fixtures/config/full.php
index c12643fb..8168d405 100644
--- a/tests/Resources/Fixtures/config/full.php
+++ b/tests/Resources/Fixtures/config/full.php
@@ -13,6 +13,13 @@
'message_factory' => 'Http\Message\MessageFactory\GuzzleMessageFactory',
'uri_factory' => 'Http\Message\UriFactory\GuzzleUriFactory',
'stream_factory' => 'Http\Message\StreamFactory\GuzzleStreamFactory',
+ 'psr18_client' => 'Http\Adapter\Guzzle6\Client',
+ 'psr17_request_factory' => 'Nyholm\Psr7\Factory\Psr17Factory',
+ 'psr17_response_factory' => 'Nyholm\Psr7\Factory\Psr17Factory',
+ 'psr17_stream_factory' => 'Nyholm\Psr7\Factory\Psr17Factory',
+ 'psr17_uri_factory' => 'Nyholm\Psr7\Factory\Psr17Factory',
+ 'psr17_uploaded_file_factory' => 'Nyholm\Psr7\Factory\Psr17Factory',
+ 'psr17_server_request_factory' => 'Nyholm\Psr7\Factory\Psr17Factory',
],
'clients' => [
'test' => [
diff --git a/tests/Resources/Fixtures/config/full.xml b/tests/Resources/Fixtures/config/full.xml
index 65fe8dd1..9405491e 100644
--- a/tests/Resources/Fixtures/config/full.xml
+++ b/tests/Resources/Fixtures/config/full.xml
@@ -14,6 +14,13 @@
Http\Message\MessageFactory\GuzzleMessageFactory
Http\Message\UriFactory\GuzzleUriFactory
Http\Message\StreamFactory\GuzzleStreamFactory
+ Http\Adapter\Guzzle6\Client
+ Nyholm\Psr7\Factory\Psr17Factory
+ Nyholm\Psr7\Factory\Psr17Factory
+ Nyholm\Psr7\Factory\Psr17Factory
+ Nyholm\Psr7\Factory\Psr17Factory
+ Nyholm\Psr7\Factory\Psr17Factory
+ Nyholm\Psr7\Factory\Psr17Factory
httplug.plugin.redirect
diff --git a/tests/Resources/Fixtures/config/full.yml b/tests/Resources/Fixtures/config/full.yml
index 66f9188f..3074b6c3 100644
--- a/tests/Resources/Fixtures/config/full.yml
+++ b/tests/Resources/Fixtures/config/full.yml
@@ -10,6 +10,13 @@ httplug:
message_factory: Http\Message\MessageFactory\GuzzleMessageFactory
uri_factory: Http\Message\UriFactory\GuzzleUriFactory
stream_factory: Http\Message\StreamFactory\GuzzleStreamFactory
+ psr18_client: Http\Adapter\Guzzle6\Client
+ psr17_request_factory: Nyholm\Psr7\Factory\Psr17Factory
+ psr17_response_factory: Nyholm\Psr7\Factory\Psr17Factory
+ psr17_stream_factory: Nyholm\Psr7\Factory\Psr17Factory
+ psr17_uri_factory: Nyholm\Psr7\Factory\Psr17Factory
+ psr17_uploaded_file_factory: Nyholm\Psr7\Factory\Psr17Factory
+ psr17_server_request_factory: Nyholm\Psr7\Factory\Psr17Factory
clients:
test:
factory: httplug.factory.guzzle6
diff --git a/tests/Unit/DependencyInjection/ConfigurationTest.php b/tests/Unit/DependencyInjection/ConfigurationTest.php
index 129c1c7b..c773c797 100644
--- a/tests/Unit/DependencyInjection/ConfigurationTest.php
+++ b/tests/Unit/DependencyInjection/ConfigurationTest.php
@@ -9,6 +9,7 @@
use Http\Message\MessageFactory\GuzzleMessageFactory;
use Http\Message\UriFactory\GuzzleUriFactory;
use Http\Message\StreamFactory\GuzzleStreamFactory;
+use Nyholm\Psr7\Factory\Psr17Factory;
use Symfony\Component\Config\Definition\ConfigurationInterface;
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
@@ -25,12 +26,26 @@ class ConfigurationTest extends AbstractExtensionConfigurationTestCase
'message_factory' => 'httplug.message_factory.default',
'uri_factory' => 'httplug.uri_factory.default',
'stream_factory' => 'httplug.stream_factory.default',
+ 'psr18_client' => 'httplug.psr18_client.default',
+ 'psr17_request_factory' => 'httplug.psr17_request_factory.default',
+ 'psr17_response_factory' => 'httplug.psr17_response_factory.default',
+ 'psr17_stream_factory' => 'httplug.psr17_stream_factory.default',
+ 'psr17_uri_factory' => 'httplug.psr17_uri_factory.default',
+ 'psr17_uploaded_file_factory' => 'httplug.psr17_uploaded_file_factory.default',
+ 'psr17_server_request_factory' => 'httplug.psr17_server_request_factory.default',
],
'classes' => [
'client' => null,
+ 'psr18_client' => null,
'message_factory' => null,
'uri_factory' => null,
'stream_factory' => null,
+ 'psr17_request_factory' => null,
+ 'psr17_response_factory' => null,
+ 'psr17_stream_factory' => null,
+ 'psr17_uri_factory' => null,
+ 'psr17_uploaded_file_factory' => null,
+ 'psr17_server_request_factory' => null,
],
'clients' => [],
'profiling' => [
@@ -117,12 +132,26 @@ public function testSupportsAllConfigFormats(): void
'message_factory' => 'my_message_factory',
'uri_factory' => 'my_uri_factory',
'stream_factory' => 'my_stream_factory',
+ 'psr18_client' => 'httplug.psr18_client.default',
+ 'psr17_request_factory' => 'httplug.psr17_request_factory.default',
+ 'psr17_response_factory' => 'httplug.psr17_response_factory.default',
+ 'psr17_stream_factory' => 'httplug.psr17_stream_factory.default',
+ 'psr17_uri_factory' => 'httplug.psr17_uri_factory.default',
+ 'psr17_uploaded_file_factory' => 'httplug.psr17_uploaded_file_factory.default',
+ 'psr17_server_request_factory' => 'httplug.psr17_server_request_factory.default',
],
'classes' => [
'client' => Client::class,
'message_factory' => GuzzleMessageFactory::class,
'uri_factory' => GuzzleUriFactory::class,
'stream_factory' => GuzzleStreamFactory::class,
+ 'psr18_client' => Client::class,
+ 'psr17_request_factory' => Psr17Factory::class,
+ 'psr17_response_factory' => Psr17Factory::class,
+ 'psr17_stream_factory' => Psr17Factory::class,
+ 'psr17_uri_factory' => Psr17Factory::class,
+ 'psr17_uploaded_file_factory' => Psr17Factory::class,
+ 'psr17_server_request_factory' => Psr17Factory::class,
],
'clients' => [
'test' => [