Passed
Pull Request — master (#32)
by Darío
02:14
created

GuzzleAdapter   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Test Coverage

Coverage 83.33%

Importance

Changes 0
Metric Value
wmc 5
eloc 12
c 0
b 0
f 0
dl 0
loc 24
ccs 10
cts 12
cp 0.8333
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A request() 0 15 4
1
<?php
2
3
namespace EasyHttp\GuzzleLayer;
4
5
use EasyHttp\LayerContracts\Contracts\HttpClientAdapter;
6
use EasyHttp\LayerContracts\Contracts\HttpClientRequest;
7
use EasyHttp\LayerContracts\Contracts\HttpClientResponse;
8
use EasyHttp\LayerContracts\Exceptions\HttpClientException;
9
use GuzzleHttp\ClientInterface;
10
use GuzzleHttp\Exception\RequestException;
11
use GuzzleHttp\Exception\TransferException;
12
13
class GuzzleAdapter implements HttpClientAdapter
14
{
15
    protected ClientInterface $client;
16
17 15
    public function __construct(ClientInterface $client)
18
    {
19 15
        $this->client = $client;
20 15
    }
21
22 15
    public function request(HttpClientRequest $request): HttpClientResponse
23
    {
24
        try {
25 15
            $response = $this->client->request($request->getMethod(), $request->getUri(), $request->options());
26 4
        } catch (RequestException $exception) {
27 4
            if (! $exception->hasResponse()) {
28 2
                throw HttpClientException::fromThrowable($exception);
29
            }
30
31 2
            $response = $exception->getResponse();
32
        } catch (TransferException $exception) {
33
            throw HttpClientException::fromThrowable($exception);
34
        }
35
36 13
        return new GuzzleResponse($response);
37
    }
38
}
39