Skip to content

Commit

Permalink
PHP-HTTP: remove references to factories
Browse files Browse the repository at this point in the history
  • Loading branch information
glaubinix committed Nov 17, 2023
1 parent fc39735 commit 5d09233
Show file tree
Hide file tree
Showing 12 changed files with 51 additions and 90 deletions.
6 changes: 4 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,18 @@
"php": "^7.3 || ^8.0",
"php-http/client-common": "^2.0",
"php-http/client-implementation": "^1.0",
"php-http/discovery": "^1.14",
"php-http/discovery": "^1.12",
"php-http/guzzle7-adapter": "^1.0",
"php-http/httplug": "^2.0",
"php-http/logger-plugin": "^1.1",
"php-http/message": "^1.9",
"php-http/message-factory": "^1.0.2",
"php-http/stopwatch-plugin": "^1.2",
"psr/http-factory-implementation": "^1.0",
"psr/http-message": "^1.0 || ^2.0",
"symfony/config": "^4.4 || ^5.0 || ^6.0",
"symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0",
"symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0",
"symfony/flex": "^2.4",
"symfony/http-kernel": "^4.4 || ^5.0 || ^6.0",
"symfony/options-resolver": "^4.4 || ^5.0 || ^6.0"
},
Expand Down
15 changes: 5 additions & 10 deletions src/DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,10 @@ public function getConfigTreeBuilder(): TreeBuilder
->validate()
->ifTrue(function ($v) {
return !empty($v['classes']['client'])
|| !empty($v['classes']['message_factory'])
|| !empty($v['classes']['uri_factory'])
|| !empty($v['classes']['stream_factory']);
|| !empty($v['classes']['psr17_request_factory'])
|| !empty($v['classes']['psr17_response_factory'])
|| !empty($v['classes']['psr17_uri_factory'])
|| !empty($v['classes']['psr17_stream_factory']);
})
->then(function ($v) {
foreach ($v['classes'] as $key => $class) {
Expand Down Expand Up @@ -119,9 +120,6 @@ public function getConfigTreeBuilder(): TreeBuilder
->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()
Expand All @@ -136,9 +134,6 @@ public function getConfigTreeBuilder(): TreeBuilder
->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()
Expand Down Expand Up @@ -857,7 +852,7 @@ private function createCachePluginNode(): NodeDefinition
->end()
->scalarNode('stream_factory')
->info('This must be a service id to a service implementing '.StreamFactory::class)
->defaultValue('httplug.stream_factory')
->defaultValue('httplug.psr17_stream_factory')
->cannotBeEmpty()
->end()
->end()
Expand Down
2 changes: 1 addition & 1 deletion src/DependencyInjection/HttplugExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ private function createUri(ContainerBuilder $container, $serviceId, $uri): void
$container
->register($serviceId, UriInterface::class)
->setPublic(false)
->setFactory([new Reference('httplug.uri_factory'), 'createUri'])
->setFactory([new Reference('httplug.psr17_uri_factory'), 'createUri'])
->addArgument($uri)
;
}
Expand Down
17 changes: 0 additions & 17 deletions src/Resources/config/services.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,6 @@
</service>

<!-- Discovery with autowiring support -->
<service id="httplug.message_factory.default" class="Http\Message\MessageFactory">
<factory class="Http\Discovery\MessageFactoryDiscovery" method="find" />
</service>
<service id="Http\Message\MessageFactory" alias="httplug.message_factory" public="false" />
<service id="Http\Message\RequestFactory" alias="httplug.message_factory" public="false" />
<service id="Http\Message\ResponseFactory" alias="httplug.message_factory" public="false" />

<service id="httplug.stream_factory.default" class="Http\Message\StreamFactory">
<factory class="Http\Discovery\StreamFactoryDiscovery" method="find" />
</service>
<service id="Http\Message\StreamFactory" alias="httplug.stream_factory" public="false" />

<service id="httplug.uri_factory.default" class="Http\Message\UriFactory">
<factory class="Http\Discovery\UriFactoryDiscovery" method="find" />
</service>
<service id="Http\Message\UriFactory" alias="httplug.uri_factory" public="false" />

<service id="httplug.async_client.default" class="Http\Client\HttpAsyncClient">
<factory class="Http\Discovery\HttpAsyncClientDiscovery" method="find" />
</service>
Expand Down
3 changes: 2 additions & 1 deletion tests/Functional/DiscoveredClientsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Http\Discovery\HttpAsyncClientDiscovery;
use Http\Discovery\HttpClientDiscovery;
use Http\Discovery\Strategy\CommonClassesStrategy;
use Http\Discovery\Strategy\CommonPsr17ClassesStrategy;
use Http\HttplugBundle\Collector\ProfileClient;
use Http\HttplugBundle\Discovery\ConfiguredClientsStrategyListener;
use Nyholm\NSA;
Expand Down Expand Up @@ -131,7 +132,7 @@ protected function setUp(): void

// Reset values
$strategy = new ConfiguredClientsStrategyListener(null, null);
HttpClientDiscovery::setStrategies([CommonClassesStrategy::class]);
HttpClientDiscovery::setStrategies([CommonClassesStrategy::class, CommonPsr17ClassesStrategy::class]);
$strategy->onEvent();
}
}
27 changes: 15 additions & 12 deletions tests/Functional/DiscoveryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@
use Http\Client\HttpClient;
use Http\Discovery\HttpClientDiscovery;
use Http\HttplugBundle\DependencyInjection\HttplugExtension;
use Http\Message\MessageFactory;
use Http\Message\StreamFactory;
use Http\Message\UriFactory;
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\ContainerBuilderHasAliasConstraint;
use PHPUnit\Framework\Constraint\LogicalNot;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Psr\Http\Message\UriFactoryInterface;
use Symfony\Component\DependencyInjection\Definition;

/**
Expand Down Expand Up @@ -44,9 +45,10 @@ public function testDiscoveryFallbacks(): void
$this->load();

$this->assertContainerBuilderHasService('httplug.client.default', HttpClient::class);
$this->assertContainerBuilderHasService('httplug.message_factory.default', MessageFactory::class);
$this->assertContainerBuilderHasService('httplug.uri_factory.default', UriFactory::class);
$this->assertContainerBuilderHasService('httplug.stream_factory.default', StreamFactory::class);
$this->assertContainerBuilderHasService('httplug.psr17_request_factory.default', RequestFactoryInterface::class);
$this->assertContainerBuilderHasService('httplug.psr17_response_factory.default', ResponseFactoryInterface::class);
$this->assertContainerBuilderHasService('httplug.psr17_uri_factory.default', UriFactoryInterface::class);
$this->assertContainerBuilderHasService('httplug.psr17_stream_factory.default', StreamFactoryInterface::class);
$this->assertContainerBuilderHasService('httplug.async_client.default', HttpAsyncClient::class);
}

Expand All @@ -56,18 +58,19 @@ public function testDiscoveryPartialFallbacks(): void
$this->setDefinition('httplug.client.default', new Definition(Client::class));

$this->assertContainerBuilderHasService('httplug.client.default', Client::class);
$this->assertContainerBuilderHasService('httplug.message_factory.default', MessageFactory::class);
$this->assertContainerBuilderHasService('httplug.uri_factory.default', UriFactory::class);
$this->assertContainerBuilderHasService('httplug.stream_factory.default', StreamFactory::class);
$this->assertContainerBuilderHasService('httplug.psr17_request_factory.default', RequestFactoryInterface::class);
$this->assertContainerBuilderHasService('httplug.psr17_response_factory.default', ResponseFactoryInterface::class);
$this->assertContainerBuilderHasService('httplug.psr17_uri_factory.default', UriFactoryInterface::class);
$this->assertContainerBuilderHasService('httplug.psr17_stream_factory.default', StreamFactoryInterface::class);
$this->assertContainerBuilderHasService('httplug.async_client.default', HttpAsyncClient::class);
}

public function testNoDiscoveryFallbacks(): void
{
$this->setDefinition('httplug.client.default', new Definition(HttpClient::class));
$this->setDefinition('httplug.message_factory.default', new Definition(MessageFactory::class));
$this->setDefinition('httplug.uri_factory.default', new Definition(UriFactory::class));
$this->setDefinition('httplug.stream_factory.default', new Definition(StreamFactory::class));
$this->setDefinition('httplug.psr17_request_factory.default', new Definition(RequestFactoryInterface::class));
$this->setDefinition('httplug.psr17_uri_factory.default', new Definition(UriFactoryInterface::class));
$this->setDefinition('httplug.psr17_stream_factory.default', new Definition(StreamFactoryInterface::class));
$this->setDefinition('httplug.async_client.default', new Definition(HttpAsyncClient::class));

$this->load();
Expand Down
10 changes: 4 additions & 6 deletions tests/Resources/Fixtures/config/full.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,13 @@
'default_client_autowiring' => false,
'main_alias' => [
'client' => 'my_client',
'message_factory' => 'my_message_factory',
'uri_factory' => 'my_uri_factory',
'stream_factory' => 'my_stream_factory',
'psr17_request_factory' => 'my_psr17_request_factory',
'psr17_response_factory' => 'my_psr17_response_factory',
'psr17_uri_factory' => 'my_psr17_uri_factory',
'psr17_stream_factory' => 'my_psr17_stream_factory',
],
'classes' => [
'client' => 'Http\Adapter\Guzzle7\Client',
'message_factory' => 'Http\Message\MessageFactory\GuzzleMessageFactory',
'uri_factory' => 'Http\Message\UriFactory\GuzzleUriFactory',
'stream_factory' => 'Http\Message\StreamFactory\GuzzleStreamFactory',
'psr18_client' => 'Http\Adapter\Guzzle7\Client',
'psr17_request_factory' => 'Nyholm\Psr7\Factory\Psr17Factory',
'psr17_response_factory' => 'Nyholm\Psr7\Factory\Psr17Factory',
Expand Down
10 changes: 4 additions & 6 deletions tests/Resources/Fixtures/config/full.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,13 @@
<default-client-autowiring>false</default-client-autowiring>
<main-alias>
<client>my_client</client>
<message-factory>my_message_factory</message-factory>
<uri-factory>my_uri_factory</uri-factory>
<stream-factory>my_stream_factory</stream-factory>
<psr17-request-factory>my_psr17_request_factory</psr17-request-factory>
<psr17-response-factory>my_psr17_response_factory</psr17-response-factory>
<psr17-uri-factory>my_psr17_uri_factory</psr17-uri-factory>
<psr17-stream-factory>my_psr17_stream_factory</psr17-stream-factory>
</main-alias>
<classes>
<client>Http\Adapter\Guzzle7\Client</client>
<message-factory>Http\Message\MessageFactory\GuzzleMessageFactory</message-factory>
<uri-factory>Http\Message\UriFactory\GuzzleUriFactory</uri-factory>
<stream-factory>Http\Message\StreamFactory\GuzzleStreamFactory</stream-factory>
<psr18-client>Http\Adapter\Guzzle7\Client</psr18-client>
<psr17-request-factory>Nyholm\Psr7\Factory\Psr17Factory</psr17-request-factory>
<psr17-response-factory>Nyholm\Psr7\Factory\Psr17Factory</psr17-response-factory>
Expand Down
10 changes: 4 additions & 6 deletions tests/Resources/Fixtures/config/full.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@ httplug:
default_client_autowiring: false
main_alias:
client: my_client
message_factory: my_message_factory
uri_factory: my_uri_factory
stream_factory: my_stream_factory
psr17_request_factory: my_psr17_request_factory
psr17_response_factory: my_psr17_response_factory
psr17_uri_factory: my_psr17_uri_factory
psr17_stream_factory: my_psr17_stream_factory
classes:
client: Http\Adapter\Guzzle7\Client
message_factory: Http\Message\MessageFactory\GuzzleMessageFactory
uri_factory: Http\Message\UriFactory\GuzzleUriFactory
stream_factory: Http\Message\StreamFactory\GuzzleStreamFactory
psr18_client: Http\Adapter\Guzzle7\Client
psr17_request_factory: Nyholm\Psr7\Factory\Psr17Factory
psr17_response_factory: Nyholm\Psr7\Factory\Psr17Factory
Expand Down
3 changes: 0 additions & 3 deletions tests/Resources/app/AppKernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,6 @@ public function process(ContainerBuilder $container): void
'httplug.strategy',
'httplug.auto_discovery.auto_discovered_client',
'httplug.auto_discovery.auto_discovered_async',
'httplug.message_factory.default',
'httplug.stream_factory.default',
'httplug.uri_factory.default',
'httplug.async_client.default',
'httplug.client.default',
'app.http.plugin.custom',
Expand Down
27 changes: 6 additions & 21 deletions tests/Unit/DependencyInjection/ConfigurationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
use Http\Adapter\Guzzle7\Client;
use Http\HttplugBundle\DependencyInjection\Configuration;
use Http\HttplugBundle\DependencyInjection\HttplugExtension;
use Http\Message\MessageFactory\GuzzleMessageFactory;
use Http\Message\StreamFactory\GuzzleStreamFactory;
use Http\Message\UriFactory\GuzzleUriFactory;
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionConfigurationTestCase;
use Nyholm\Psr7\Factory\Psr17Factory;
use Symfony\Component\Config\Definition\ConfigurationInterface;
Expand All @@ -25,9 +22,6 @@ class ConfigurationTest extends AbstractExtensionConfigurationTestCase
'default_client_autowiring' => true,
'main_alias' => [
'client' => 'httplug.client.default',
'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',
Expand All @@ -39,9 +33,6 @@ class ConfigurationTest extends AbstractExtensionConfigurationTestCase
'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,
Expand All @@ -59,7 +50,7 @@ class ConfigurationTest extends AbstractExtensionConfigurationTestCase
'authentication' => [],
'cache' => [
'enabled' => false,
'stream_factory' => 'httplug.stream_factory',
'stream_factory' => 'httplug.psr17_stream_factory',
'config' => [
'methods' => ['GET', 'HEAD'],
'blacklisted_paths' => [],
Expand Down Expand Up @@ -125,22 +116,16 @@ public function testSupportsAllConfigFormats(): void
'default_client_autowiring' => false,
'main_alias' => [
'client' => 'my_client',
'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_request_factory' => 'my_psr17_request_factory',
'psr17_response_factory' => 'my_psr17_response_factory',
'psr17_stream_factory' => 'my_psr17_stream_factory',
'psr17_uri_factory' => 'my_psr17_uri_factory',
'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,
Expand Down Expand Up @@ -492,7 +477,7 @@ public function testNullDefaultTtl(): void
],
'cache_pool' => 'my_custom_cache_pull',
'enabled' => true,
'stream_factory' => 'httplug.stream_factory',
'stream_factory' => 'httplug.psr17_stream_factory',
],
],
],
Expand Down
11 changes: 6 additions & 5 deletions tests/Unit/DependencyInjection/HttplugExtensionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public function testConfigLoadDefault(): void
{
$this->load();

foreach (['client', 'message_factory', 'uri_factory', 'stream_factory'] as $type) {
foreach (['client', 'psr17_request_factory', 'psr17_response_factory', 'psr17_uri_factory', 'psr17_stream_factory'] as $type) {
$this->assertContainerBuilderHasAlias("httplug.$type", "httplug.$type.default");
}
}
Expand All @@ -66,13 +66,14 @@ public function testConfigLoadService(): void
$this->load([
'main_alias' => [
'client' => 'my_client_service',
'message_factory' => 'my_message_factory_service',
'uri_factory' => 'my_uri_factory_service',
'stream_factory' => 'my_stream_factory_service',
'psr17_request_factory' => 'my_psr17_request_factory_service',
'psr17_response_factory' => 'my_psr17_response_factory_service',
'psr17_uri_factory' => 'my_psr17_uri_factory_service',
'psr17_stream_factory' => 'my_psr17_stream_factory_service',
],
]);

foreach (['client', 'message_factory', 'uri_factory', 'stream_factory'] as $type) {
foreach (['client', 'psr17_request_factory', 'psr17_response_factory', 'psr17_uri_factory', 'psr17_stream_factory'] as $type) {
$this->assertContainerBuilderHasAlias("httplug.$type", "my_{$type}_service");
}
}
Expand Down

0 comments on commit 5d09233

Please sign in to comment.