Completed
Push — master ( 88b9f7...c044d2 )
by Pol
15:00
created

AbstractClient::sendRequest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 1
cts 1
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace drupol\Yaroc\Http;
6
7
use Http\Client\HttpClient;
8
use Http\Discovery\HttpClientDiscovery;
9
use Http\Discovery\MessageFactoryDiscovery;
10
use Http\Message\MessageFactory;
11
use Psr\Http\Message\RequestInterface;
12
use Psr\Http\Message\ResponseInterface;
13
14
/**
15
 * Class AbstractClient.
16
 */
17
abstract class AbstractClient implements HttpClient
18
{
19
    /**
20
     * The HTTP client.
21
     *
22
     * @var \Http\Client\HttpClient
23
     */
24
    private $httpClient;
25
26
    /**
27
     * The HTTP message factory.
28
     *
29
     * @var \Http\Message\MessageFactory
30
     */
31
    private $messageFactory;
32
33
    /**
34
     * AbstractClient constructor.
35
     *
36
     * @param \Http\Client\HttpClient $client
37
     * @param null|\Http\Message\MessageFactory $messageFactory
38
     *
39 10
     * @SuppressWarnings(PHPMD.StaticAccess)
40
     */
41 10
    public function __construct(HttpClient $client = null, MessageFactory $messageFactory = null)
42 10
    {
43 10
        $this->httpClient = $client ?? HttpClientDiscovery::find();
44
        $this->messageFactory = $messageFactory ?? MessageFactoryDiscovery::find();
45
    }
46
47
    /**
48
     * Returns the HTTP adapter.
49
     *
50 5
     * @return HttpClient
51
     */
52 5
    public function getHttpClient(): HttpClient
53 5
    {
54
        return $this->httpClient;
55 5
    }
56
57
    /**
58
     * Get the message factory.
59
     *
60
     * @return MessageFactory
61
     */
62
    public function getMessageFactory(): MessageFactory
63 5
    {
64
        return $this->messageFactory;
65 5
    }
66
67
    /**
68
     * {@inheritdoc}
69
     */
70
    public function sendRequest(RequestInterface $request): ResponseInterface
71
    {
72
        return $this->httpClient->sendRequest($request);
73 5
    }
74
75 5
    /**
76
     * @param \Http\Client\HttpClient $httpClient
77
     *
78
     * @return \drupol\Yaroc\Http\AbstractClient
79
     */
80
    public function withHttpClient(HttpClient $httpClient): AbstractClient
81
    {
82
        $clone = clone $this;
83
        $clone->httpClient = $httpClient;
84
85
        return $clone;
86
    }
87
}
88