Passed
Pull Request — master (#2)
by Andreas
11:41
created

AbstractClient::sendRequest()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 6
c 1
b 0
f 0
dl 0
loc 12
ccs 0
cts 7
cp 0
rs 10
cc 2
nc 2
nop 1
crap 6
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
    protected function sendRequest(RequestInterface $request): ResponseInterface
23
    {
24
        $request = $this->authenticate($request);
25
26
        $response = $this->discoverClient()->sendRequest($request);
27
28
        if ($request->getBody()->isSeekable()) {
29
            $request->getBody()->rewind();
30
        }
31
        $this->rawRequest = $request->getBody()->__toString();
32
33
        return $response;
34
    }
35
36
    protected function discoverClient(): ClientInterface
37
    {
38
        $client = new Client($this->options);
39
40
        return $client;
41
    }
42
}
43