Skip to content
This repository was archived by the owner on Jan 6, 2024. It is now read-only.

Commit 5c42339

Browse files
committed
Add basic handling (not working)
1 parent 386b4df commit 5c42339

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"php": "^5.4 || ^7.0",
1515
"php-http/httplug": "^1.0",
1616
"php-http/discovery": "^1.0",
17-
"zendframework/zend-http": "^2.0"
17+
"zendframework/zend-http": "^2.3"
1818
},
1919
"require-dev": {
2020
"php-http/client-integration-tests": "^0.5.1"

src/.gitkeep

Whitespace-only changes.

src/Client.php

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,64 @@
22

33
namespace Http\Adapter\Zend;
44

5+
use Http\Client\Exception\NetworkException;
56
use Http\Client\HttpClient;
7+
use Http\Discovery\MessageFactoryDiscovery;
8+
use Http\Message\ResponseFactory;
69
use Psr\Http\Message\RequestInterface;
10+
use Zend\Http\Client as ZendClient;
11+
use Zend\Http\Exception\RuntimeException;
12+
use Zend\Http\Header\GenericHeader;
13+
use Zend\Http\Headers;
14+
use Zend\Http\Request;
715

816
class Client implements HttpClient
917
{
18+
/** @var ZendClient */
19+
private $client;
20+
21+
/** @var ResponseFactory */
22+
private $responseFactory;
23+
24+
public function __construct(ZendClient $client = null, ResponseFactory $responseFactory = null)
25+
{
26+
$this->client = $client ?: new ZendClient(null, [
27+
'maxredirects' => 0,
28+
'storeresponse' => false,
29+
]);
30+
$this->responseFactory = $responseFactory ?: MessageFactoryDiscovery::find();
31+
}
32+
1033
/**
1134
* {@inheritdoc}
1235
*/
1336
public function sendRequest(RequestInterface $request)
1437
{
38+
$headers = new Headers();
39+
40+
foreach ($request->getHeaders() as $key => $value) {
41+
$headers->addHeader(new GenericHeader($key, $request->getHeaderLine($key)));
42+
}
43+
44+
$zendRequest = new Request();
45+
$zendRequest->setMethod($request->getMethod());
46+
$zendRequest->setUri((string) $request->getUri());
47+
$zendRequest->setVersion($request->getProtocolVersion());
48+
$zendRequest->setHeaders($headers);
49+
$zendRequest->setContent($request->getBody()->getContents());
50+
51+
try {
52+
$zendResponse = $this->client->send($zendRequest);
53+
} catch (RuntimeException $exception) {
54+
throw new NetworkException($exception->getMessage(), $request, $exception);
55+
}
56+
57+
return $this->responseFactory->createResponse(
58+
$zendResponse->getStatusCode(),
59+
$zendResponse->getReasonPhrase(),
60+
$zendResponse->getHeaders()->toArray(),
61+
$zendResponse->getContent(),
62+
$zendResponse->getVersion()
63+
);
1564
}
1665
}

0 commit comments

Comments
 (0)