From c33903445568deb5792580a0732ea3a08a5a1ae9 Mon Sep 17 00:00:00 2001 From: Nyholm Date: Thu, 26 Dec 2019 19:53:25 +0100 Subject: [PATCH] Allow to register PSR17 and PSR18 classes as services --- composer.json | 2 +- src/DependencyInjection/Configuration.php | 14 +++++++++ src/Resources/config/services.xml | 29 +++++++++++++++++-- tests/Resources/Fixtures/config/full.php | 7 +++++ tests/Resources/Fixtures/config/full.xml | 7 +++++ tests/Resources/Fixtures/config/full.yml | 7 +++++ .../DependencyInjection/ConfigurationTest.php | 29 +++++++++++++++++++ 7 files changed, 92 insertions(+), 3 deletions(-) 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' => [