Skip to content

Commit 84cfa0b

Browse files
committed
Update deps with stable release, add discovery suggestion
1 parent 7bc8b4f commit 84cfa0b

6 files changed

+274
-27
lines changed

composer.json

+17-14
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,32 @@
11
{
22
"name": "php-http/socket-client",
33
"description": "Socket client for PHP-HTTP",
4+
"license": "MIT",
5+
"authors": [
6+
{
7+
"name": "Joel Wurtz",
8+
"email": "[email protected]"
9+
}
10+
],
411
"require": {
512
"php": ">=5.4",
613
"symfony/options-resolver": "^2.6|^3.0",
7-
"php-http/httplug": "1.0.0-beta",
14+
"php-http/httplug": "^1.0",
815
"php-http/message-factory": "^1.0.2"
916
},
1017
"require-dev": {
1118
"phpunit/phpunit": "^4.8",
1219
"guzzlehttp/psr7": "^1.2",
13-
"php-http/discovery": "^0.5@dev",
20+
"php-http/discovery": "^0.8@dev",
1421
"php-http/adapter-integration-tests": "dev-master",
15-
"php-http/message": "^0.1@dev",
16-
"php-http/client-common": "^0.1@dev"
22+
"php-http/message": "^0.2@dev",
23+
"php-http/client-common": "0.2.0"
24+
},
25+
"suggest": {
26+
"php-http/discovery": "Used for message factory discovery"
27+
},
28+
"provide": {
29+
"php-http/client-implementation": "1.0"
1730
},
1831
"autoload": {
1932
"psr-4": {
@@ -25,16 +38,6 @@
2538
"Http\\Client\\Socket\\Tests\\": "tests/"
2639
}
2740
},
28-
"license": "MIT",
29-
"authors": [
30-
{
31-
"name": "Joel Wurtz",
32-
"email": "[email protected]"
33-
}
34-
],
35-
"provide": {
36-
"php-http/client-implementation": "1.0"
37-
},
3841
"scripts": {
3942
"test": "vendor/bin/phpunit",
4043
"test-ci": "vendor/bin/phpunit --coverage-clover build/coverage.xml"

puli.json

+222-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,231 @@
11
{
22
"version": "1.0",
3+
"name": "php-http/socket-client",
34
"bindings": {
4-
"549d2931-726b-4f1a-b99c-179959605cfe": {
5+
"bbd41ece-94a0-4ddc-942d-a1491d74c5fc": {
56
"_class": "Puli\\Discovery\\Binding\\ClassBinding",
67
"class": "Http\\Client\\Socket\\Client",
78
"type": "Http\\Client\\HttpClient"
89
}
10+
},
11+
"config": {
12+
"bootstrap-file": "vendor/autoload.php"
13+
},
14+
"packages": {
15+
"clue/stream-filter": {
16+
"install-path": "vendor/clue/stream-filter",
17+
"installer": "composer",
18+
"env": "dev"
19+
},
20+
"doctrine/instantiator": {
21+
"install-path": "vendor/doctrine/instantiator",
22+
"installer": "composer",
23+
"env": "dev"
24+
},
25+
"guzzlehttp/psr7": {
26+
"install-path": "vendor/guzzlehttp/psr7",
27+
"installer": "composer",
28+
"env": "dev"
29+
},
30+
"justinrainbow/json-schema": {
31+
"install-path": "vendor/justinrainbow/json-schema",
32+
"installer": "composer",
33+
"env": "dev"
34+
},
35+
"php-http/adapter-integration-tests": {
36+
"install-path": "vendor/php-http/adapter-integration-tests",
37+
"installer": "composer",
38+
"env": "dev"
39+
},
40+
"php-http/client-common": {
41+
"install-path": "vendor/php-http/client-common",
42+
"installer": "composer",
43+
"env": "dev"
44+
},
45+
"php-http/discovery": {
46+
"install-path": "vendor/php-http/discovery",
47+
"installer": "composer",
48+
"env": "dev"
49+
},
50+
"php-http/httplug": {
51+
"install-path": "vendor/php-http/httplug",
52+
"installer": "composer"
53+
},
54+
"php-http/message": {
55+
"install-path": "vendor/php-http/message",
56+
"installer": "composer",
57+
"env": "dev"
58+
},
59+
"php-http/message-factory": {
60+
"install-path": "vendor/php-http/message-factory",
61+
"installer": "composer"
62+
},
63+
"php-http/promise": {
64+
"install-path": "vendor/php-http/promise",
65+
"installer": "composer"
66+
},
67+
"phpdocumentor/reflection-docblock": {
68+
"install-path": "vendor/phpdocumentor/reflection-docblock",
69+
"installer": "composer",
70+
"env": "dev"
71+
},
72+
"phpspec/prophecy": {
73+
"install-path": "vendor/phpspec/prophecy",
74+
"installer": "composer",
75+
"env": "dev"
76+
},
77+
"phpunit/php-code-coverage": {
78+
"install-path": "vendor/phpunit/php-code-coverage",
79+
"installer": "composer",
80+
"env": "dev"
81+
},
82+
"phpunit/php-file-iterator": {
83+
"install-path": "vendor/phpunit/php-file-iterator",
84+
"installer": "composer",
85+
"env": "dev"
86+
},
87+
"phpunit/php-text-template": {
88+
"install-path": "vendor/phpunit/php-text-template",
89+
"installer": "composer",
90+
"env": "dev"
91+
},
92+
"phpunit/php-timer": {
93+
"install-path": "vendor/phpunit/php-timer",
94+
"installer": "composer",
95+
"env": "dev"
96+
},
97+
"phpunit/php-token-stream": {
98+
"install-path": "vendor/phpunit/php-token-stream",
99+
"installer": "composer",
100+
"env": "dev"
101+
},
102+
"phpunit/phpunit": {
103+
"install-path": "vendor/phpunit/phpunit",
104+
"installer": "composer",
105+
"env": "dev"
106+
},
107+
"phpunit/phpunit-mock-objects": {
108+
"install-path": "vendor/phpunit/phpunit-mock-objects",
109+
"installer": "composer",
110+
"env": "dev"
111+
},
112+
"psr/http-message": {
113+
"install-path": "vendor/psr/http-message",
114+
"installer": "composer"
115+
},
116+
"psr/log": {
117+
"install-path": "vendor/psr/log",
118+
"installer": "composer",
119+
"env": "dev"
120+
},
121+
"puli/composer-plugin": {
122+
"install-path": "vendor/puli/composer-plugin",
123+
"installer": "composer",
124+
"env": "dev"
125+
},
126+
"puli/discovery": {
127+
"install-path": "vendor/puli/discovery",
128+
"installer": "composer",
129+
"env": "dev"
130+
},
131+
"puli/repository": {
132+
"install-path": "vendor/puli/repository",
133+
"installer": "composer",
134+
"env": "dev"
135+
},
136+
"puli/url-generator": {
137+
"install-path": "vendor/puli/url-generator",
138+
"installer": "composer",
139+
"env": "dev"
140+
},
141+
"ramsey/uuid": {
142+
"install-path": "vendor/ramsey/uuid",
143+
"installer": "composer",
144+
"env": "dev"
145+
},
146+
"sebastian/comparator": {
147+
"install-path": "vendor/sebastian/comparator",
148+
"installer": "composer",
149+
"env": "dev"
150+
},
151+
"sebastian/diff": {
152+
"install-path": "vendor/sebastian/diff",
153+
"installer": "composer",
154+
"env": "dev"
155+
},
156+
"sebastian/environment": {
157+
"install-path": "vendor/sebastian/environment",
158+
"installer": "composer",
159+
"env": "dev"
160+
},
161+
"sebastian/exporter": {
162+
"install-path": "vendor/sebastian/exporter",
163+
"installer": "composer",
164+
"env": "dev"
165+
},
166+
"sebastian/global-state": {
167+
"install-path": "vendor/sebastian/global-state",
168+
"installer": "composer",
169+
"env": "dev"
170+
},
171+
"sebastian/recursion-context": {
172+
"install-path": "vendor/sebastian/recursion-context",
173+
"installer": "composer",
174+
"env": "dev"
175+
},
176+
"sebastian/version": {
177+
"install-path": "vendor/sebastian/version",
178+
"installer": "composer",
179+
"env": "dev"
180+
},
181+
"seld/jsonlint": {
182+
"install-path": "vendor/seld/jsonlint",
183+
"installer": "composer",
184+
"env": "dev"
185+
},
186+
"symfony/options-resolver": {
187+
"install-path": "vendor/symfony/options-resolver",
188+
"installer": "composer"
189+
},
190+
"symfony/process": {
191+
"install-path": "vendor/symfony/process",
192+
"installer": "composer",
193+
"env": "dev"
194+
},
195+
"symfony/yaml": {
196+
"install-path": "vendor/symfony/yaml",
197+
"installer": "composer",
198+
"env": "dev"
199+
},
200+
"th3n3rd/cartesian-product": {
201+
"install-path": "vendor/th3n3rd/cartesian-product",
202+
"installer": "composer",
203+
"env": "dev"
204+
},
205+
"webmozart/assert": {
206+
"install-path": "vendor/webmozart/assert",
207+
"installer": "composer",
208+
"env": "dev"
209+
},
210+
"webmozart/expression": {
211+
"install-path": "vendor/webmozart/expression",
212+
"installer": "composer",
213+
"env": "dev"
214+
},
215+
"webmozart/glob": {
216+
"install-path": "vendor/webmozart/glob",
217+
"installer": "composer",
218+
"env": "dev"
219+
},
220+
"webmozart/json": {
221+
"install-path": "vendor/webmozart/json",
222+
"installer": "composer",
223+
"env": "dev"
224+
},
225+
"webmozart/path-util": {
226+
"install-path": "vendor/webmozart/path-util",
227+
"installer": "composer",
228+
"env": "dev"
229+
}
9230
}
10231
}

src/Client.php

+29-7
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44

55
use Http\Client\Exception\NetworkException;
66
use Http\Client\HttpClient;
7+
use Http\Discovery\MessageFactoryDiscovery;
78
use Http\Message\MessageFactory;
9+
use Http\Message\ResponseFactory;
810
use Psr\Http\Message\RequestInterface;
911
use Symfony\Component\OptionsResolver\Options;
1012
use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -32,12 +34,32 @@ class Client implements HttpClient
3234
];
3335

3436
/**
35-
* @param MessageFactory $messageFactory
36-
* @param array $config
37+
* Constructor.
38+
*
39+
* @param ResponseFactory $responseFactory Response factory for creating response
40+
* @param array $config {
41+
* @var string $remote_socket Remote entrypoint (can be a tcp or unix domain address)
42+
* @var int $timeout Timeout before canceling request
43+
* @var array $stream_context_options Context options as defined in the PHP documentation
44+
* @var array $stream_context_param Context params as defined in the PHP documentation
45+
* @var bool $ssl Use ssl, default to scheme from request, false if not present
46+
* @var int $write_buffer_size Buffer when writing the request body, defaults to 8192
47+
* @var int $ssl_method Crypto method for ssl/tls, see PHP doc, defaults to STREAM_CRYPTO_METHOD_TLS_CLIENT
48+
* }
49+
*
50+
* @throws \LogicException When MessageFactory is not provided and cannot be discovered
3751
*/
38-
public function __construct(MessageFactory $messageFactory, array $config = [])
52+
public function __construct(ResponseFactory $responseFactory = null, array $config = [])
3953
{
40-
$this->messageFactory = $messageFactory;
54+
if (null === $responseFactory && !class_exists('\Http\Discovery\MessageFactoryDiscovery')) {
55+
throw new \LogicException('No response factory provided and no discovery service is present to guess it, maybe you need to install php-http/discovery package?');
56+
}
57+
58+
if (null === $responseFactory) {
59+
$responseFactory = MessageFactoryDiscovery::find();
60+
}
61+
62+
$this->responseFactory = $responseFactory;
4163
$this->config = $this->configure($config);
4264
}
4365

@@ -58,7 +80,7 @@ public function sendRequest(RequestInterface $request)
5880
}
5981

6082
if (null === $useSsl) {
61-
$useSsl = ($request->getUri()->getScheme() == "https");
83+
$useSsl = ($request->getUri()->getScheme() === 'https');
6284
}
6385

6486
$socket = $this->createSocket($request, $remote, $useSsl);
@@ -82,9 +104,9 @@ public function sendRequest(RequestInterface $request)
82104
* @param string $remote Entrypoint for the connection
83105
* @param boolean $useSsl Whether to use ssl or not
84106
*
85-
* @throws NetworkException
107+
* @throws NetworkException When the connection fail
86108
*
87-
* @return resource
109+
* @return resource Socket resource
88110
*/
89111
protected function createSocket(RequestInterface $request, $remote, $useSsl)
90112
{

src/ResponseReader.php

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

55
use Http\Client\Exception\NetworkException;
66
use Http\Message\MessageFactory;
7+
use Http\Message\ResponseFactory;
78
use Psr\Http\Message\RequestInterface;
89
use Psr\Http\Message\ResponseInterface;
910

@@ -17,9 +18,9 @@
1718
trait ResponseReader
1819
{
1920
/**
20-
* @var MessageFactory
21+
* @var ResponseFactory For creating response
2122
*/
22-
protected $messageFactory;
23+
protected $responseFactory;
2324

2425
/**
2526
* Read a response from a socket
@@ -77,7 +78,7 @@ protected function readResponse(RequestInterface $request, $socket)
7778
: '';
7879
}
7980

80-
$response = $this->messageFactory->createResponse($status, $reason, $responseHeaders, null, $protocol);
81+
$response = $this->responseFactory->createResponse($status, $reason, $responseHeaders, null, $protocol);
8182
$stream = $this->createStream($socket, $response);
8283

8384
return $response->withBody($stream);

tests/SocketClientFeatureTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ class SocketClientFeatureTest extends HttpFeatureTest
1010
{
1111
protected function createClient()
1212
{
13-
return new SocketHttpClient(new GuzzleMessageFactory());
13+
return new SocketHttpClient();
1414
}
1515
}

tests/SocketHttpAdapterTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ class SocketHttpAdapterTest extends HttpClientTest
1313
*/
1414
protected function createHttpAdapter()
1515
{
16-
return new SocketHttpClient(new GuzzleMessageFactory());
16+
return new SocketHttpClient();
1717
}
1818
}

0 commit comments

Comments
 (0)