Skip to content

Commit

Permalink
Update deps with stable release, add discovery suggestion
Browse files Browse the repository at this point in the history
  • Loading branch information
joelwurtz committed Jan 26, 2016
1 parent 7bc8b4f commit 84cfa0b
Show file tree
Hide file tree
Showing 6 changed files with 274 additions and 27 deletions.
31 changes: 17 additions & 14 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,19 +1,32 @@
{
"name": "php-http/socket-client",
"description": "Socket client for PHP-HTTP",
"license": "MIT",
"authors": [
{
"name": "Joel Wurtz",
"email": "[email protected]"
}
],
"require": {
"php": ">=5.4",
"symfony/options-resolver": "^2.6|^3.0",
"php-http/httplug": "1.0.0-beta",
"php-http/httplug": "^1.0",
"php-http/message-factory": "^1.0.2"
},
"require-dev": {
"phpunit/phpunit": "^4.8",
"guzzlehttp/psr7": "^1.2",
"php-http/discovery": "^0.5@dev",
"php-http/discovery": "^0.8@dev",
"php-http/adapter-integration-tests": "dev-master",
"php-http/message": "^0.1@dev",
"php-http/client-common": "^0.1@dev"
"php-http/message": "^0.2@dev",
"php-http/client-common": "0.2.0"
},
"suggest": {
"php-http/discovery": "Used for message factory discovery"
},
"provide": {
"php-http/client-implementation": "1.0"
},
"autoload": {
"psr-4": {
Expand All @@ -25,16 +38,6 @@
"Http\\Client\\Socket\\Tests\\": "tests/"
}
},
"license": "MIT",
"authors": [
{
"name": "Joel Wurtz",
"email": "[email protected]"
}
],
"provide": {
"php-http/client-implementation": "1.0"
},
"scripts": {
"test": "vendor/bin/phpunit",
"test-ci": "vendor/bin/phpunit --coverage-clover build/coverage.xml"
Expand Down
223 changes: 222 additions & 1 deletion puli.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,231 @@
{
"version": "1.0",
"name": "php-http/socket-client",
"bindings": {
"549d2931-726b-4f1a-b99c-179959605cfe": {
"bbd41ece-94a0-4ddc-942d-a1491d74c5fc": {
"_class": "Puli\\Discovery\\Binding\\ClassBinding",
"class": "Http\\Client\\Socket\\Client",
"type": "Http\\Client\\HttpClient"
}
},
"config": {
"bootstrap-file": "vendor/autoload.php"
},
"packages": {
"clue/stream-filter": {
"install-path": "vendor/clue/stream-filter",
"installer": "composer",
"env": "dev"
},
"doctrine/instantiator": {
"install-path": "vendor/doctrine/instantiator",
"installer": "composer",
"env": "dev"
},
"guzzlehttp/psr7": {
"install-path": "vendor/guzzlehttp/psr7",
"installer": "composer",
"env": "dev"
},
"justinrainbow/json-schema": {
"install-path": "vendor/justinrainbow/json-schema",
"installer": "composer",
"env": "dev"
},
"php-http/adapter-integration-tests": {
"install-path": "vendor/php-http/adapter-integration-tests",
"installer": "composer",
"env": "dev"
},
"php-http/client-common": {
"install-path": "vendor/php-http/client-common",
"installer": "composer",
"env": "dev"
},
"php-http/discovery": {
"install-path": "vendor/php-http/discovery",
"installer": "composer",
"env": "dev"
},
"php-http/httplug": {
"install-path": "vendor/php-http/httplug",
"installer": "composer"
},
"php-http/message": {
"install-path": "vendor/php-http/message",
"installer": "composer",
"env": "dev"
},
"php-http/message-factory": {
"install-path": "vendor/php-http/message-factory",
"installer": "composer"
},
"php-http/promise": {
"install-path": "vendor/php-http/promise",
"installer": "composer"
},
"phpdocumentor/reflection-docblock": {
"install-path": "vendor/phpdocumentor/reflection-docblock",
"installer": "composer",
"env": "dev"
},
"phpspec/prophecy": {
"install-path": "vendor/phpspec/prophecy",
"installer": "composer",
"env": "dev"
},
"phpunit/php-code-coverage": {
"install-path": "vendor/phpunit/php-code-coverage",
"installer": "composer",
"env": "dev"
},
"phpunit/php-file-iterator": {
"install-path": "vendor/phpunit/php-file-iterator",
"installer": "composer",
"env": "dev"
},
"phpunit/php-text-template": {
"install-path": "vendor/phpunit/php-text-template",
"installer": "composer",
"env": "dev"
},
"phpunit/php-timer": {
"install-path": "vendor/phpunit/php-timer",
"installer": "composer",
"env": "dev"
},
"phpunit/php-token-stream": {
"install-path": "vendor/phpunit/php-token-stream",
"installer": "composer",
"env": "dev"
},
"phpunit/phpunit": {
"install-path": "vendor/phpunit/phpunit",
"installer": "composer",
"env": "dev"
},
"phpunit/phpunit-mock-objects": {
"install-path": "vendor/phpunit/phpunit-mock-objects",
"installer": "composer",
"env": "dev"
},
"psr/http-message": {
"install-path": "vendor/psr/http-message",
"installer": "composer"
},
"psr/log": {
"install-path": "vendor/psr/log",
"installer": "composer",
"env": "dev"
},
"puli/composer-plugin": {
"install-path": "vendor/puli/composer-plugin",
"installer": "composer",
"env": "dev"
},
"puli/discovery": {
"install-path": "vendor/puli/discovery",
"installer": "composer",
"env": "dev"
},
"puli/repository": {
"install-path": "vendor/puli/repository",
"installer": "composer",
"env": "dev"
},
"puli/url-generator": {
"install-path": "vendor/puli/url-generator",
"installer": "composer",
"env": "dev"
},
"ramsey/uuid": {
"install-path": "vendor/ramsey/uuid",
"installer": "composer",
"env": "dev"
},
"sebastian/comparator": {
"install-path": "vendor/sebastian/comparator",
"installer": "composer",
"env": "dev"
},
"sebastian/diff": {
"install-path": "vendor/sebastian/diff",
"installer": "composer",
"env": "dev"
},
"sebastian/environment": {
"install-path": "vendor/sebastian/environment",
"installer": "composer",
"env": "dev"
},
"sebastian/exporter": {
"install-path": "vendor/sebastian/exporter",
"installer": "composer",
"env": "dev"
},
"sebastian/global-state": {
"install-path": "vendor/sebastian/global-state",
"installer": "composer",
"env": "dev"
},
"sebastian/recursion-context": {
"install-path": "vendor/sebastian/recursion-context",
"installer": "composer",
"env": "dev"
},
"sebastian/version": {
"install-path": "vendor/sebastian/version",
"installer": "composer",
"env": "dev"
},
"seld/jsonlint": {
"install-path": "vendor/seld/jsonlint",
"installer": "composer",
"env": "dev"
},
"symfony/options-resolver": {
"install-path": "vendor/symfony/options-resolver",
"installer": "composer"
},
"symfony/process": {
"install-path": "vendor/symfony/process",
"installer": "composer",
"env": "dev"
},
"symfony/yaml": {
"install-path": "vendor/symfony/yaml",
"installer": "composer",
"env": "dev"
},
"th3n3rd/cartesian-product": {
"install-path": "vendor/th3n3rd/cartesian-product",
"installer": "composer",
"env": "dev"
},
"webmozart/assert": {
"install-path": "vendor/webmozart/assert",
"installer": "composer",
"env": "dev"
},
"webmozart/expression": {
"install-path": "vendor/webmozart/expression",
"installer": "composer",
"env": "dev"
},
"webmozart/glob": {
"install-path": "vendor/webmozart/glob",
"installer": "composer",
"env": "dev"
},
"webmozart/json": {
"install-path": "vendor/webmozart/json",
"installer": "composer",
"env": "dev"
},
"webmozart/path-util": {
"install-path": "vendor/webmozart/path-util",
"installer": "composer",
"env": "dev"
}
}
}
36 changes: 29 additions & 7 deletions src/Client.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@

use Http\Client\Exception\NetworkException;
use Http\Client\HttpClient;
use Http\Discovery\MessageFactoryDiscovery;
use Http\Message\MessageFactory;
use Http\Message\ResponseFactory;
use Psr\Http\Message\RequestInterface;
use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolver;
Expand Down Expand Up @@ -32,12 +34,32 @@ class Client implements HttpClient
];

/**
* @param MessageFactory $messageFactory
* @param array $config
* Constructor.
*
* @param ResponseFactory $responseFactory Response factory for creating response
* @param array $config {
* @var string $remote_socket Remote entrypoint (can be a tcp or unix domain address)
* @var int $timeout Timeout before canceling request
* @var array $stream_context_options Context options as defined in the PHP documentation
* @var array $stream_context_param Context params as defined in the PHP documentation
* @var bool $ssl Use ssl, default to scheme from request, false if not present
* @var int $write_buffer_size Buffer when writing the request body, defaults to 8192
* @var int $ssl_method Crypto method for ssl/tls, see PHP doc, defaults to STREAM_CRYPTO_METHOD_TLS_CLIENT
* }
*
* @throws \LogicException When MessageFactory is not provided and cannot be discovered
*/
public function __construct(MessageFactory $messageFactory, array $config = [])
public function __construct(ResponseFactory $responseFactory = null, array $config = [])
{
$this->messageFactory = $messageFactory;
if (null === $responseFactory && !class_exists('\Http\Discovery\MessageFactoryDiscovery')) {
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?');
}

if (null === $responseFactory) {
$responseFactory = MessageFactoryDiscovery::find();
}

$this->responseFactory = $responseFactory;
$this->config = $this->configure($config);
}

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

if (null === $useSsl) {
$useSsl = ($request->getUri()->getScheme() == "https");
$useSsl = ($request->getUri()->getScheme() === 'https');
}

$socket = $this->createSocket($request, $remote, $useSsl);
Expand All @@ -82,9 +104,9 @@ public function sendRequest(RequestInterface $request)
* @param string $remote Entrypoint for the connection
* @param boolean $useSsl Whether to use ssl or not
*
* @throws NetworkException
* @throws NetworkException When the connection fail
*
* @return resource
* @return resource Socket resource
*/
protected function createSocket(RequestInterface $request, $remote, $useSsl)
{
Expand Down
7 changes: 4 additions & 3 deletions src/ResponseReader.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Http\Client\Exception\NetworkException;
use Http\Message\MessageFactory;
use Http\Message\ResponseFactory;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;

Expand All @@ -17,9 +18,9 @@
trait ResponseReader
{
/**
* @var MessageFactory
* @var ResponseFactory For creating response
*/
protected $messageFactory;
protected $responseFactory;

/**
* Read a response from a socket
Expand Down Expand Up @@ -77,7 +78,7 @@ protected function readResponse(RequestInterface $request, $socket)
: '';
}

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

return $response->withBody($stream);
Expand Down
2 changes: 1 addition & 1 deletion tests/SocketClientFeatureTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ class SocketClientFeatureTest extends HttpFeatureTest
{
protected function createClient()
{
return new SocketHttpClient(new GuzzleMessageFactory());
return new SocketHttpClient();
}
}
2 changes: 1 addition & 1 deletion tests/SocketHttpAdapterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ class SocketHttpAdapterTest extends HttpClientTest
*/
protected function createHttpAdapter()
{
return new SocketHttpClient(new GuzzleMessageFactory());
return new SocketHttpClient();
}
}

0 comments on commit 84cfa0b

Please sign in to comment.