Passed
Pull Request — master (#1)
by Samuel
03:41 queued 02:16
created

HttpException   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 12
eloc 28
dl 0
loc 62
c 0
b 0
f 0
ccs 31
cts 31
cp 1
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getRequest() 0 3 1
A __construct() 0 6 1
A getStatusCode() 0 3 1
B exceptionClass() 0 17 7
A getResponse() 0 3 1
A wrap() 0 8 1
1
<?php
2
3
namespace Elmage\TextNg\Exception;
4
5
use GuzzleHttp\Exception\RequestException;
6
use Psr\Http\Message\RequestInterface;
7
use Psr\Http\Message\ResponseInterface;
8
9
class HttpException extends RuntimeException
10
{
11
    private $request;
12
    private $response;
13
14
    /**
15
     * Wraps an API exception in the appropriate domain exception.
16
     *
17
     * @param RequestException $e The API exception
18
     *
19
     * @return HttpException
20
     */
21 14
    public static function wrap(RequestException $e)
22
    {
23 14
        $response = $e->getResponse();
24
25 14
        $class = self::exceptionClass($response);
0 ignored issues
show
Bug introduced by
It seems like $response can also be of type null; however, parameter $response of Elmage\TextNg\Exception\...ption::exceptionClass() does only seem to accept Psr\Http\Message\ResponseInterface, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

25
        $class = self::exceptionClass(/** @scrutinizer ignore-type */ $response);
Loading history...
26 14
        $message = $e->getMessage();
27
28 14
        return new $class($message, $e->getRequest(), $response, $e);
29
    }
30
31 14
    public function __construct($message, RequestInterface $request, ResponseInterface $response, \Exception $previous)
32
    {
33 14
        parent::__construct($message, 0, $previous);
34
35 14
        $this->request = $request;
36 14
        $this->response = $response;
37 14
    }
38
39 14
    public function getRequest()
40
    {
41 14
        return $this->request;
42
    }
43
44 14
    public function getResponse()
45
    {
46 14
        return $this->response;
47
    }
48
49 14
    public function getStatusCode()
50
    {
51 14
        return $this->response->getStatusCode();
52
    }
53
54 14
    private static function exceptionClass(ResponseInterface $response)
55
    {
56 14
        switch ($response->getStatusCode()) {
57 14
            case 400:
58 2
                return BadRequestException::class;
59 12
            case 401:
60 2
                return UnauthorizedException::class;
61 10
            case 404:
62 2
                return NotFoundException::class;
63 8
            case 422:
64 2
                return ValidationException::class;
65 6
            case 500:
66 2
                return InternalServerException::class;
67 4
            case 503:
68 2
                return ServiceUnavailableException::class;
69
            default:
70 2
                return HttpException::class;
71
        }
72
    }
73
}
74