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

AbstractClient   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 11
c 1
b 0
f 0
dl 0
loc 29
ccs 0
cts 10
cp 0
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A sendRequest() 0 12 2
A discoverClient() 0 5 1
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