Skip to content

Commit 4c0cbf8

Browse files
committed
Implement PSR-17 + PSR-18
1 parent c4567f7 commit 4c0cbf8

File tree

4 files changed

+45
-50
lines changed

4 files changed

+45
-50
lines changed

.travis.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
language: php
22

33
php:
4-
- 5.6
5-
- 7.0
64
- 7.1
75
- 7.2
86
- 7.3
@@ -24,9 +22,9 @@ env:
2422

2523
matrix:
2624
include:
27-
- php: 5.6
25+
- php: 7.1
2826
env: setup=lowest symfony="^2.1"
29-
- php: 5.6
27+
- php: 7.1
3028
env: setup=lowest symfony="^3"
3129
- php: 7.1
3230
env: setup=lowest symfony="^4"

composer.json

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,14 @@
3838
"classmap": ["src/Omnipay.php"]
3939
},
4040
"require": {
41-
"php": "^5.6|^7",
42-
"php-http/client-implementation": "^1",
43-
"php-http/message": "^1.5",
44-
"php-http/discovery": "^1.2.1",
41+
"php": "^7.1",
42+
"moneyphp/money": "^3.1",
43+
"php-http/discovery": "^1.3",
44+
"psr/http-client": "^1",
45+
"psr/http-client-implementation": "^1",
46+
"psr/http-factory": "^1",
4547
"symfony/http-foundation": "^2.1||^3||^4",
46-
"moneyphp/money": "^3.1"
48+
"zendframework/zend-diactoros": "^2.1"
4749
},
4850
"require-dev": {
4951
"omnipay/tests": "^3",
@@ -53,7 +55,7 @@
5355
},
5456
"extra": {
5557
"branch-alias": {
56-
"dev-master": "3.0.x-dev"
58+
"dev-master": "3.1.x-dev"
5759
}
5860
},
5961
"suggest": {

src/Common/Http/Client.php

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,34 @@
22

33
namespace Omnipay\Common\Http;
44

5-
use function GuzzleHttp\Psr7\str;
6-
use Http\Client\HttpClient;
7-
use Http\Discovery\HttpClientDiscovery;
8-
use Http\Discovery\MessageFactoryDiscovery;
9-
use Http\Message\RequestFactory;
5+
use Http\Discovery\Psr17FactoryDiscovery;
6+
use Http\Discovery\Psr18ClientDiscovery;
107
use Omnipay\Common\Http\Exception\NetworkException;
118
use Omnipay\Common\Http\Exception\RequestException;
129
use Psr\Http\Message\RequestInterface;
1310
use Psr\Http\Message\ResponseInterface;
1411
use Psr\Http\Message\StreamInterface;
15-
use Psr\Http\Message\UriInterface;
12+
use Psr\Http\Client\ClientInterface as Psr18ClientInterface;
13+
use Psr\Http\Message\RequestFactoryInterface as Psr17RequestFactoryInterface;
1614

17-
class Client implements ClientInterface
15+
final class Client implements ClientInterface
1816
{
1917
/**
2018
* The Http Client which implements `public function sendRequest(RequestInterface $request)`
21-
* Note: Will be changed to PSR-18 when released
2219
*
23-
* @var HttpClient
20+
* @var Psr18ClientInterface
2421
*/
2522
private $httpClient;
2623

2724
/**
28-
* @var RequestFactory
25+
* @var Psr17RequestFactoryInterface
2926
*/
3027
private $requestFactory;
3128

32-
public function __construct($httpClient = null, RequestFactory $requestFactory = null)
29+
public function __construct($httpClient = null, $requestFactory = null)
3330
{
34-
$this->httpClient = $httpClient ?: HttpClientDiscovery::find();
35-
$this->requestFactory = $requestFactory ?: MessageFactoryDiscovery::find();
31+
$this->httpClient = $httpClient ?: Psr18ClientDiscovery::find();
32+
$this->requestFactory = $requestFactory ?: Psr17FactoryDiscovery::findRequestFactory();
3633
}
3734

3835
/**
@@ -51,23 +48,33 @@ public function request(
5148
$body = null,
5249
$protocolVersion = '1.1'
5350
) {
54-
$request = $this->requestFactory->createRequest($method, $uri, $headers, $body, $protocolVersion);
51+
$request = $this->requestFactory
52+
->createRequest($method, $uri)
53+
->withProtocolVersion($protocolVersion);
54+
55+
if ($body) {
56+
$request = $request->withBody($body);
57+
}
58+
59+
foreach ($headers as $name => $value) {
60+
$request = $request->withHeader($name, $value);
61+
}
5562

5663
return $this->sendRequest($request);
5764
}
5865

5966
/**
6067
* @param RequestInterface $request
6168
* @return ResponseInterface
62-
* @throws \Http\Client\Exception
69+
* @throws NetworkException|RequestException
6370
*/
6471
private function sendRequest(RequestInterface $request)
6572
{
6673
try {
6774
return $this->httpClient->sendRequest($request);
6875
} catch (\Http\Client\Exception\NetworkException $networkException) {
6976
throw new NetworkException($networkException->getMessage(), $request, $networkException);
70-
} catch (\Exception $exception) {
77+
} catch (\Throwable $exception) {
7178
throw new RequestException($exception->getMessage(), $request, $exception);
7279
}
7380
}

tests/Omnipay/Common/Http/ClientTest.php

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,25 @@
66
use Http\Client\Exception\NetworkException;
77
use Mockery as m;
88
use GuzzleHttp\Psr7\Request;
9-
use Http\Client\HttpClient;
10-
use Http\Message\RequestFactory;
119
use Omnipay\Common\Http\Exception\RequestException;
1210
use Omnipay\Tests\TestCase;
11+
use Psr\Http\Client\ClientInterface;
12+
use Psr\Http\Message\RequestFactoryInterface;
1313

1414
class ClientTest extends TestCase
1515
{
1616
public function testEmptyConstruct()
1717
{
1818
$client = new Client();
1919

20-
$this->assertAttributeInstanceOf(HttpClient::class, 'httpClient', $client);
21-
$this->assertAttributeInstanceOf(RequestFactory::class, 'requestFactory', $client);
20+
$this->assertAttributeInstanceOf(ClientInterface::class, 'httpClient', $client);
21+
$this->assertAttributeInstanceOf(RequestFactoryInterface::class, 'requestFactory', $client);
2222
}
2323

2424
public function testSend()
2525
{
26-
$mockClient = m::mock(HttpClient::class);
27-
$mockFactory = m::mock(RequestFactory::class);
26+
$mockClient = m::mock(ClientInterface::class);
27+
$mockFactory = m::mock(RequestFactoryInterface::class);
2828
$client = new Client($mockClient, $mockFactory);
2929

3030
$request = new Request('GET', '/path');
@@ -33,9 +33,6 @@ public function testSend()
3333
$mockFactory->shouldReceive('createRequest')->withArgs([
3434
'GET',
3535
'/path',
36-
[],
37-
null,
38-
'1.1',
3936
])->andReturn($request);
4037

4138
$mockClient->shouldReceive('sendRequest')
@@ -49,8 +46,8 @@ public function testSend()
4946

5047
public function testSendException()
5148
{
52-
$mockClient = m::mock(HttpClient::class);
53-
$mockFactory = m::mock(RequestFactory::class);
49+
$mockClient = m::mock(ClientInterface::class);
50+
$mockFactory = m::mock(RequestFactoryInterface::class);
5451
$client = new Client($mockClient, $mockFactory);
5552

5653
$request = new Request('GET', '/path');
@@ -59,9 +56,6 @@ public function testSendException()
5956
$mockFactory->shouldReceive('createRequest')->withArgs([
6057
'GET',
6158
'/path',
62-
[],
63-
null,
64-
'1.1',
6559
])->andReturn($request);
6660

6761
$mockClient->shouldReceive('sendRequest')
@@ -76,8 +70,8 @@ public function testSendException()
7670

7771
public function testSendNetworkException()
7872
{
79-
$mockClient = m::mock(HttpClient::class);
80-
$mockFactory = m::mock(RequestFactory::class);
73+
$mockClient = m::mock(ClientInterface::class);
74+
$mockFactory = m::mock(RequestFactoryInterface::class);
8175
$client = new Client($mockClient, $mockFactory);
8276

8377
$request = new Request('GET', '/path');
@@ -86,9 +80,6 @@ public function testSendNetworkException()
8680
$mockFactory->shouldReceive('createRequest')->withArgs([
8781
'GET',
8882
'/path',
89-
[],
90-
null,
91-
'1.1',
9283
])->andReturn($request);
9384

9485
$mockClient->shouldReceive('sendRequest')
@@ -103,8 +94,8 @@ public function testSendNetworkException()
10394

10495
public function testSendExceptionGetRequest()
10596
{
106-
$mockClient = m::mock(HttpClient::class);
107-
$mockFactory = m::mock(RequestFactory::class);
97+
$mockClient = m::mock(ClientInterface::class);
98+
$mockFactory = m::mock(RequestFactoryInterface::class);
10899
$client = new Client($mockClient, $mockFactory);
109100

110101
$request = new Request('GET', '/path');
@@ -113,9 +104,6 @@ public function testSendExceptionGetRequest()
113104
$mockFactory->shouldReceive('createRequest')->withArgs([
114105
'GET',
115106
'/path',
116-
[],
117-
null,
118-
'1.1',
119107
])->andReturn($request);
120108

121109
$exception = new \Exception('Something went wrong');

0 commit comments

Comments
 (0)