Completed
Push — master ( 238e2d...c71ea9 )
by Gabor
03:17
created

RoutingMiddleware   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 1 Features 1
Metric Value
wmc 3
c 3
b 1
f 1
lcom 0
cbo 4
dl 0
loc 48
ccs 21
cts 21
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
B __invoke() 0 24 2
1
<?php
2
/**
3
 * WebHemi.
4
 *
5
 * PHP version 5.6
6
 *
7
 * @copyright 2012 - 2016 Gixx-web (http://www.gixx-web.com)
8
 * @license   https://opensource.org/licenses/MIT The MIT License (MIT)
9
 *
10
 * @link      http://www.gixx-web.com
11
 */
12
namespace WebHemi\Middleware;
13
14
use Exception;
15
use WebHemi\Adapter\Http\ResponseInterface;
16
use WebHemi\Adapter\Http\ServerRequestInterface;
17
use WebHemi\Adapter\Router\RouterAdapterInterface;
18
use WebHemi\Application\ApplicationInterface;
19
use WebHemi\Routing\Result;
20
21
/**
22
 * Class RoutingMiddleware.
23
 */
24
class RoutingMiddleware implements MiddlewareInterface
25
{
26
    /** @var RouterAdapterInterface */
27
    private $routerAdapter;
28
29
    /**
30
     * RoutingMiddleware constructor.
31
     *
32
     * @param RouterAdapterInterface $routerAdapter
33
     */
34 4
    public function __construct(RouterAdapterInterface $routerAdapter)
35
    {
36 4
        $this->routerAdapter = $routerAdapter;
37 4
    }
38
39
    /**
40
     * From the request .
41
     *
42
     * @param ServerRequestInterface $request
43
     * @param ResponseInterface      $response
44
     *
45
     * @return ResponseInterface
46
     */
47 4
    public function __invoke(ServerRequestInterface &$request, ResponseInterface $response)
48
    {
49 4
        $routeResult = $this->routerAdapter->match($request);
50
51 4
        if ($routeResult->getStatus() !== Result::CODE_FOUND) {
52 2
            $response = $response->withStatus($routeResult->getStatus());
53 2
            $request  = $request->withAttribute(
54 2
                ServerRequestInterface::REQUEST_ATTR_MIDDLEWARE_EXCEPTION,
55 2
                new Exception($routeResult->getStatusReason())
56 2
            );
57 2
        } else {
58
            $request = $request
59 2
                ->withAttribute(
60 2
                    ServerRequestInterface::REQUEST_ATTR_RESOLVED_ACTION_CLASS,
61 2
                    $routeResult->getMatchedMiddleware()
62 2
                )
63 2
                ->withAttribute(
64 2
                    ServerRequestInterface::REQUEST_ATTR_ROUTING_PARAMETERS,
65 2
                    $routeResult->getParameters()
66 2
                );
67
        }
68
69 4
        return $response;
70
    }
71
}
72