RoutesMiddleware   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 22
Duplicated Lines 0 %

Importance

Changes 6
Bugs 0 Features 0
Metric Value
eloc 11
c 6
b 0
f 0
dl 0
loc 22
rs 10
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A process() 0 8 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Chinstrap\Core\Http\Middleware;
6
7
use Chinstrap\Core\Events\RegisterDynamicRoutes;
8
use Chinstrap\Core\Events\RegisterStaticRoutes;
9
use Laminas\EventManager\EventManagerInterface;
10
use League\Route\Http\Exception\NotFoundException;
11
use League\Route\Router;
12
use Psr\Http\Message\ResponseInterface;
13
use Psr\Http\Message\ServerRequestInterface;
14
use Psr\Http\Server\MiddlewareInterface;
15
use Psr\Http\Server\RequestHandlerInterface;
16
17
final class RoutesMiddleware implements MiddlewareInterface
18
{
19
    private Router $router;
20
21
    private EventManagerInterface $eventManager;
22
23
    public function __construct(
24
        Router $router,
25
        EventManagerInterface $eventManager
26
    ) {
27
        $this->router = $router;
28
        $this->eventManager = $eventManager;
29
    }
30
31
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
32
    {
33
        $this->eventManager->trigger(RegisterStaticRoutes::class);
34
        $this->eventManager->trigger(RegisterDynamicRoutes::class);
35
        try {
36
            return $this->router->dispatch($request);
37
        } catch (NotFoundException $e) {
38
            return $handler->handle($request);
39
        }
40
    }
41
}
42