Test Failed
Push — master ( 73c405...d57cd2 )
by Konstantins
03:14
created

RequestRouteCollection   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 84.62%

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 4
dl 0
loc 51
ccs 11
cts 13
cp 0.8462
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A findByName() 0 4 1
B all() 0 13 6
1
<?php declare(strict_types = 1);
2
3
namespace Venta\Routing;
4
5
use Psr\Http\Message\ServerRequestInterface;
6
use Venta\Contracts\Routing\ImmutableRouteCollection as RouteCollectionContract;
7
8
/**
9
 * Class RequestRouteCollection
10
 *
11
 * @package Venta\Routing
12
 */
13
final class RequestRouteCollection implements RouteCollectionContract
14
{
15
16
    /**
17
     * @var ServerRequestInterface
18
     */
19
    private $request;
20
21
    /**
22
     * @var RouteCollectionContract
23
     */
24
    private $routes;
25
26
    /**
27
     * RequestRouteCollection constructor.
28
     *
29
     * @param ServerRequestInterface $request
30
     * @param RouteCollectionContract $routes
31
     */
32 4
    public function __construct(ServerRequestInterface $request, RouteCollectionContract $routes)
33
    {
34 4
        $this->request = $request;
35 4
        $this->routes = $routes;
36 4
    }
37
38
    /**
39
     * @inheritDoc
40
     */
41
    public function findByName(string $routeName)
42
    {
43
        return $this->routes->findByName($routeName);
44
    }
45
46
    /**
47
     * @inheritDoc
48
     */
49 2
    public function all(): array
50
    {
51 2
        $routes = [];
52 2
        foreach ($this->routes->all() as $route) {
53 1
            if ((!$route->host() || $route->host() === $this->request->getUri()->getHost())
54 1
                && (!$route->scheme() || $route->scheme() === $this->request->getUri()->getScheme())
55
            ) {
56 1
                $routes[] = $route;
57
            }
58
        }
59
60 2
        return $routes;
61
    }
62
63
}
64