RequestTransformerListener   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 6
lcom 0
cbo 4
dl 0
loc 26
ccs 12
cts 12
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A onKernelRequest() 0 18 4
A supports() 0 4 2
1
<?php declare(strict_types=1);
2
3
namespace SymfonyBundles\JsonRequestBundle\EventListener;
4
5
use Symfony\Component\HttpFoundation\Request;
6
use Symfony\Component\HttpFoundation\Response;
7
use Symfony\Component\HttpFoundation\JsonResponse;
8
use Symfony\Component\HttpKernel\Event\RequestEvent;
9
10
final class RequestTransformerListener
11
{
12 3
    public function onKernelRequest(RequestEvent $event): void
13
    {
14 3
        $request = $event->getRequest();
15
16 3
        if (false === $this->supports($request)) {
17 1
            return;
18
        }
19
20
        try {
21 2
            $data = \json_decode((string) $request->getContent(), true, 512, \JSON_THROW_ON_ERROR);
22
23 1
            if (\is_array($data)) {
24 1
                $request->request->replace($data);
25
            }
26 1
        } catch (\JsonException $exception) {
27 1
            $event->setResponse(new JsonResponse(['message' => $exception->getMessage()], Response::HTTP_BAD_REQUEST));
28
        }
29 2
    }
30
31 3
    private function supports(Request $request): bool
32
    {
33 3
        return 'json' === $request->getContentType() && $request->getContent();
34
    }
35
}
36