Completed
Pull Request — master (#30)
by Yuriy
37:30 queued 22:07
created

JsonExceptionListener::onKernelException()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 18
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 3.0067

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 18
ccs 10
cts 11
cp 0.9091
rs 9.4285
cc 3
eloc 12
nc 3
nop 1
crap 3.0067
1
<?php
2
3
namespace AppBundle\Listener;
4
5
use AppBundle\Exception\JsonHttpException;
6
use Psr\Log\LoggerInterface;
7
use Symfony\Component\HttpFoundation\JsonResponse;
8
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
9
10
class JsonExceptionListener
11
{
12
    /**
13
     * @var LoggerInterface
14
     */
15
    private $logger;
16
17 16
    public function __construct(LoggerInterface $logger)
18
    {
19 16
        $this->logger = $logger;
20 16
    }
21
22 5
    public function onKernelException(GetResponseForExceptionEvent $event)
23
    {
24 5
        $exception = $event->getException();
25 5
        if ($exception instanceof JsonHttpException) {
26
            $errorData = [
27
                'error' => [
28 5
                    'code' => $exception->getStatusCode(),
29 5
                    'message' => $exception->getMessage(),
30
                ],
31
            ];
32 5
            if (($data = $exception->getData())) {
33
                $errorData['error']['fields'] = $data;
34
            }
35 5
            $response = new JsonResponse($errorData);
36 5
            $event->setResponse($response);
37 5
            $this->logger->error($exception->getMessage(), $errorData);
38
        }
39 5
    }
40
}
41