ErrorHandler   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 6

Test Coverage

Coverage 38.1%

Importance

Changes 0
Metric Value
wmc 6
lcom 0
cbo 6
dl 0
loc 48
ccs 8
cts 21
cp 0.381
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
B __invoke() 0 28 5
1
<?php
2
3
namespace Flatdown;
4
5
use League\Plates\Engine as PlatesEngine;
6
use Middlewares\ErrorHandlerDefault;
7
use Middlewares\HttpErrorException;
8
use Middlewares\Utils;
9
use Psr\Http\Message\ResponseInterface;
10
use Psr\Http\Message\ServerRequestInterface;
11
12
class ErrorHandler extends ErrorHandlerDefault
13
{
14
    /**
15
     * @var PlatesEngine
16
     */
17
    private $templates;
18
19
    /**
20
     * @param PlatesEngine $templates
21
     */
22 15
    public function __construct(PlatesEngine $templates)
23
    {
24 15
        $this->templates = $templates;
25 15
    }
26
27
    /**
28
     * @param ServerRequestInterface $request
29
     * @return ResponseInterface
30
     */
31 3
    public function __invoke(ServerRequestInterface $request)
32
    {
33 3
        $error  = $request->getAttribute('error');
34 3
        $accept = $request->getHeaderLine('Accept');
35
36 3
        if ((stripos($accept, 'text/html') !== false) && ($error instanceof HttpErrorException)) {
37
            $code = $error->getCode();
38
            $view = 'errors/' . $code;
39
40
            if (!file_exists($this->templates->path($view))) {
41
                $view = 'errors/default';
42
            }
43
44
            if ($prev = $error->getPrevious()) {
45
                error_log('ERROR: ' . $prev->getMessage());
46
            } else {
47
                error_log('ERROR: ' . $error->getMessage());
48
            }
49
50
            $content  = $this->templates->render($view, ['error' => $error]);
51
            $response = Utils\Factory::createResponse($code);
52
            $response->getBody()->write($content);
53
54
            return $response;
55
        }
56
57 3
        return parent::__invoke($request);
58
    }
59
}
60