bytic /
router
| 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
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 |