Skip to content

Commit b178535

Browse files
authored
Merge pull request #81 from php-http/no-puli
Require discovery 0.9 and do not handle Puli.
2 parents 123428f + 6bdb562 commit b178535

File tree

9 files changed

+33
-314
lines changed

9 files changed

+33
-314
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Change Log
22

3+
## 1.1.1 - 2016-06-30
4+
5+
### Changed
6+
7+
- Removed Puli logic and require `php-http/discovery:0.9` which makes Puli optional.
38

49
## 1.1.0 - 2016-05-19
510

DependencyInjection/Compiler/DiscoveryPass.php

+18-40
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
namespace Http\HttplugBundle\DependencyInjection\Compiler;
44

55
use Http\Client\HttpClient;
6-
use Http\HttplugBundle\HttplugFactory;
6+
use Http\Discovery\HttpClientDiscovery;
7+
use Http\Discovery\MessageFactoryDiscovery;
8+
use Http\Discovery\StreamFactoryDiscovery;
9+
use Http\Discovery\UriFactoryDiscovery;
710
use Http\Message\MessageFactory;
811
use Http\Message\StreamFactory;
912
use Http\Message\UriFactory;
1013
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1114
use Symfony\Component\DependencyInjection\ContainerBuilder;
12-
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
13-
use Symfony\Component\DependencyInjection\Reference;
1415

1516
/**
1617
* Adds fallback and discovery services.
@@ -31,55 +32,32 @@ final class DiscoveryPass implements CompilerPassInterface
3132
'stream_factory' => StreamFactory::class,
3233
];
3334

35+
/**
36+
* Factories by type.
37+
*
38+
* @var array
39+
*/
40+
private $factoryClasses = [
41+
'client' => HttpClientDiscovery::class,
42+
'message_factory' => MessageFactoryDiscovery::class,
43+
'uri_factory' => UriFactoryDiscovery::class,
44+
'stream_factory' => StreamFactoryDiscovery::class,
45+
];
46+
3447
/**
3548
* {@inheritdoc}
3649
*/
3750
public function process(ContainerBuilder $container)
3851
{
39-
$useDiscovery = false;
40-
4152
foreach ($this->services as $service => $class) {
4253
$serviceId = sprintf('httplug.%s.default', $service);
4354

4455
if (false === $container->has($serviceId)) {
45-
// Register and create factory for the first time
46-
if (false === $useDiscovery) {
47-
$this->registerFactory($container);
48-
49-
$factory = [
50-
new Reference('httplug.factory'),
51-
'find',
52-
];
53-
54-
$useDiscovery = true;
55-
}
56-
56+
// Register and create factory for service
5757
$definition = $container->register($serviceId, $class);
58-
59-
$definition->setFactory($factory);
58+
$definition->setFactory([$this->factoryClasses[$service], 'find']);
6059
$definition->addArgument($class);
6160
}
6261
}
6362
}
64-
65-
/**
66-
* @param ContainerBuilder $container
67-
*
68-
* @throws RuntimeException
69-
*/
70-
private function registerFactory(ContainerBuilder $container)
71-
{
72-
if (false === $container->has('puli.discovery')) {
73-
throw new RuntimeException(
74-
'You need to install puli/symfony-bundle or add configuration at httplug.classes in order to use this bundle. Refer to http://docs.php-http.org/en/latest/integrations/symfony-bundle.html#discovery-of-factory-classes'
75-
);
76-
}
77-
78-
$definition = $container->register('httplug.factory', HttplugFactory::class);
79-
80-
$definition
81-
->addArgument(new Reference('puli.discovery'))
82-
->setPublic(false)
83-
;
84-
}
8563
}

HttplugFactory.php

-104
This file was deleted.

Tests/Resources/app/AppKernel.php

+1-5
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,7 @@ public function registerBundles()
1414
new \Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
1515
new \Http\HttplugBundle\HttplugBundle(),
1616
];
17-
18-
if (false === defined('HHVM_VERSION')) {
19-
$bundles[] = new \Puli\SymfonyBundle\PuliBundle();
20-
}
21-
17+
2218
return $bundles;
2319
}
2420

Tests/Unit/DependencyInjection/Compiler/DiscoveryPassTest.php

-21
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
use Http\Client\HttpClient;
66
use Http\HttplugBundle\DependencyInjection\Compiler\DiscoveryPass;
7-
use Http\HttplugBundle\HttplugFactory;
87
use Http\Message\MessageFactory;
98
use Http\Message\StreamFactory;
109
use Http\Message\UriFactory;
@@ -24,12 +23,8 @@ protected function registerCompilerPass(ContainerBuilder $container)
2423

2524
public function testDiscoveryFallbacks()
2625
{
27-
$this->setDefinition('puli.discovery', new Definition('Puli\Discovery\Api\Discovery'));
28-
2926
$this->compile();
3027

31-
$this->assertContainerBuilderHasService('httplug.factory', HttplugFactory::class);
32-
3328
$this->assertContainerBuilderHasService('httplug.client.default', HttpClient::class);
3429
$this->assertContainerBuilderHasService('httplug.message_factory.default', MessageFactory::class);
3530
$this->assertContainerBuilderHasService('httplug.uri_factory.default', UriFactory::class);
@@ -38,13 +33,10 @@ public function testDiscoveryFallbacks()
3833

3934
public function testDiscoveryPartialFallbacks()
4035
{
41-
$this->setDefinition('puli.discovery', new Definition('Puli\Discovery\Api\Discovery'));
4236
$this->setDefinition('httplug.client.default', new Definition('Http\Adapter\Guzzle6\Client'));
4337

4438
$this->compile();
4539

46-
$this->assertContainerBuilderHasService('httplug.factory', HttplugFactory::class);
47-
4840
$this->assertContainerBuilderHasService('httplug.client.default', 'Http\Adapter\Guzzle6\Client');
4941
$this->assertContainerBuilderHasService('httplug.message_factory.default', MessageFactory::class);
5042
$this->assertContainerBuilderHasService('httplug.uri_factory.default', UriFactory::class);
@@ -59,18 +51,5 @@ public function testNoDiscoveryFallbacks()
5951
$this->setDefinition('httplug.stream_factory.default', new Definition(StreamFactory::class));
6052

6153
$this->compile();
62-
63-
$this->assertContainerBuilderNotHasService('httplug.factory');
64-
}
65-
66-
/**
67-
* Overridden test as we have dependencies in this compiler pass.
68-
*
69-
* @test
70-
* @expectedException \RuntimeException
71-
*/
72-
public function compilation_should_not_fail_with_empty_container()
73-
{
74-
$this->compile();
7554
}
7655
}

Tests/Unit/HttplugFactoryTest.php

-123
This file was deleted.

0 commit comments

Comments
 (0)