AppKernel::handle()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 10
nc 3
nop 1
dl 0
loc 15
rs 9.9332
c 0
b 0
f 0
1
<?php
2
3
namespace App;
4
5
use App\Controller\DetectorController;
6
use Symfony\Component\HttpFoundation\{Request, Response};
7
use Symfony\Component\HttpFoundation\Exception\RequestExceptionInterface;
8
9
final class AppKernel
10
{
11
    public const KERNEL_ROOT = __DIR__;
12
    public const PROJECT_ROOT = __DIR__.'/..';
13
14
    public static function handle(Request $request): void
15
    {
16
        $response = new Response();
17
18
        try {
19
            $response = static::handleRaw($request);
20
        } catch (RequestExceptionInterface $e) {
21
            $response->setStatusCode($e->getCode());
22
            $response->setContent($e->getMessage());
23
        } catch (\Throwable $e) {
24
            $response->setStatusCode(Response::HTTP_INTERNAL_SERVER_ERROR);
25
            $response->setContent('Server error');
26
        }
27
28
        $response->send();
29
    }
30
31
    public static function handleRaw(Request $request): Response
32
    {
33
        // It's a kind of routing you know...
34
        if ('/json' === $request->getPathInfo()) {
35
            $format = DetectorController::FORMAT_JSON;
36
        } elseif ('/plain' === $request->getPathInfo()) {
37
            $format = DetectorController::FORMAT_PLAIN;
38
        } elseif ('/' === $request->getPathInfo()) {
39
            $format = DetectorController::FORMAT_HTML;
40
        } else {
41
            return new Response('Resource not found', Response::HTTP_NOT_FOUND);
42
        }
43
44
        return DetectorController::detect($request, $format);
45
    }
46
}