ApiError   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 23
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 2
dl 0
loc 23
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 20 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Handler;
6
7
use Psr\Http\Message\ServerRequestInterface as Request;
8
use Psr\Http\Message\ResponseInterface as Response;
9
10
final class ApiError extends \Slim\Handlers\Error
11
{
12
    public function __invoke(Request $request, Response $response, \Exception $exception)
13
    {
14
        $statusCode = 500;
15
        if (is_int($exception->getCode()) && $exception->getCode() >= 400 && $exception->getCode() <= 599) {
16
            $statusCode = $exception->getCode();
17
        }
18
        $className = new \ReflectionClass(get_class($exception));
19
        $data = [
20
            'message' => $exception->getMessage(),
21
            'class' => $className->getShortName(),
22
            'status' => 'error',
23
            'code' => $statusCode,
24
        ];
25
        $body = json_encode($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
26
27
        return $response
28
                ->withStatus($statusCode)
29
                ->withHeader('Content-type', 'application/problem+json')
30
                ->write($body);
31
    }
32
}
33