RequestException::getRequest()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
ccs 0
cts 2
cp 0
rs 10
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Swis\Melvin\Exceptions;
6
7
use Psr\Http\Message\RequestInterface;
8
use Psr\Http\Message\ResponseInterface;
9
10
class RequestException extends \RuntimeException implements Exception
11
{
12
    public function __construct(
13
        string $message,
14
        private RequestInterface $request,
15
        private ?ResponseInterface $response = null,
16
        ?\Throwable $previous = null
17
    ) {
18
        $code = $response ? $response->getStatusCode() : 0;
19
        parent::__construct($message, $code, $previous);
20
    }
21
22
    public static function create(
23
        RequestInterface $request,
24
        ?ResponseInterface $response = null,
25
        ?\Throwable $previous = null
26
    ): self {
27
        if (!$response) {
28
            return new self(
29
                'Error completing request',
30
                $request,
31
                null,
32
                $previous
33
            );
34
        }
35
36
        $message = sprintf(
37
            '`%s %s` resulted in a `%s %s` response',
38
            $request->getMethod(),
39
            $request->getUri(),
40
            $response->getStatusCode(),
41
            $response->getReasonPhrase()
42
        );
43
44
        return new self($message, $request, $response, $previous);
45
    }
46
47
    public function getRequest(): RequestInterface
48
    {
49
        return $this->request;
50
    }
51
52
    public function getResponse(): ?ResponseInterface
53
    {
54
        return $this->response;
55
    }
56
}
57