RouteResolverMiddleware::getRouter()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
ccs 1
cts 1
cp 1
crap 1
rs 10
1
<?php
2
declare(strict_types=1);
3
4
namespace Nip\Router\Middleware;
5
6
use Nip\Http\ServerMiddleware\Middlewares\ServerMiddlewareInterface;
7
use Nip\Request;
8
use Nip\Router\RequestContext;
9
use Nip\Router\Router;
10
use Psr\Http\Message\ResponseInterface;
11
use Psr\Http\Message\ServerRequestInterface;
12
use Psr\Http\Server\RequestHandlerInterface;
13
14
/**
15
 * Class StartSession
16
 * @package Nip\Session\Middleware
17
 */
18
class RouteResolverMiddleware implements ServerMiddlewareInterface
19
{
20
21
    /**
22
     * The session manager.
23
     *
24
     * @var Router
25
     */
26
    protected $router;
27
28
    /**
29
     * Create a new session middleware.
30
     *
31
     * @param Router $router
32 1
     */
33
    public function __construct(Router $router)
34 1
    {
35 1
        $this->router = $router;
36
    }
37
38
    /**
39
     * @inheritdoc
40
     * @param Request $request
41 1
     */
42
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
43 1
    {
44 1
        $this->getRouter()->setContext((new RequestContext())->fromRequest($request));
0 ignored issues
show
Bug introduced by
$request of type Psr\Http\Message\ServerRequestInterface is incompatible with the type Symfony\Component\HttpFoundation\Request expected by parameter $request of Nip\Router\RequestContext::fromRequest(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

44
        $this->getRouter()->setContext((new RequestContext())->fromRequest(/** @scrutinizer ignore-type */ $request));
Loading history...
45 1
        $return = $this->getRouter()->matchRequest($request);
46
        if (is_array($return) && isset($return['_route'])) {
47
            $this->populateRequest($request, $return);
48
        }
49 1
50
        return $handler->handle($request);
51
    }
52
53
    /**
54
     * @param Request $request
55
     * @param $params
56
     */
57
    protected function populateRequest($request, $params)
58
    {
59
        foreach ($params as $param => $value) {
60
            switch ($param) {
61
                case 'module':
62
                    $request->setModuleName($value);
63
                    break;
64
                case 'controller':
65
                    $request->setControllerName($value);
66
                    break;
67
                case 'action':
68
                    $request->setActionName($value);
69
                    break;
70
                default:
71
                    $request->attributes->set($param, $value);
72
                    break;
73
            }
74
        }
75
    }
76
77
    /**
78
     * @return Router
79 1
     */
80
    public function getRouter(): Router
81 1
    {
82
        return $this->router;
83
    }
84
}
85