Passed
Pull Request — master (#2)
by Andreas
01:34
created

AbstractClient::sendRequest()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 6
c 1
b 0
f 0
dl 0
loc 12
ccs 7
cts 7
cp 1
rs 10
cc 2
nc 2
nop 1
crap 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Larium\Pay\Client;
6
7
use Larium\Http\Client;
8
use Psr\Http\Client\ClientInterface;
9
use Psr\Http\Message\RequestInterface;
10
use Psr\Http\Message\ResponseInterface;
11
12
abstract class AbstractClient
13
{
14
    protected string $rawRequest = '';
15
16
    protected array $options = [];
17
18
    abstract protected function authenticate(RequestInterface $request): RequestInterface;
19
20
    abstract public function addHeader(string $name, string $value): void;
21
22 6
    protected function sendRequest(RequestInterface $request): ResponseInterface
23
    {
24 6
        $request = $this->authenticate($request);
25
26 6
        $response = $this->discoverClient()->sendRequest($request);
27
28 6
        if ($request->getBody()->isSeekable()) {
29 6
            $request->getBody()->rewind();
30
        }
31 6
        $this->rawRequest = $request->getBody()->__toString();
32
33 6
        return $response;
34
    }
35
36
    protected function discoverClient(): ClientInterface
37
    {
38
        $client = new Client($this->options);
39
40
        return $client;
41
    }
42
}
43