Passed
Push — master ( f86c0a...3332ed )
by Mike
02:25
created

RouteCollection::getRouteRequirements()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 1
nc 2
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
4
namespace Xervice\Routing\Business\Route;
5
6
7
use DataProvider\RouteCollectionDataProvider;
8
use DataProvider\RouteDataProvider;
9
use Symfony\Component\Routing\Route;
10
use Symfony\Component\Routing\Route as SymfonyRoute;
11
use Symfony\Component\Routing\RouteCollection as SymfonyRouteCollection;
12
13
class RouteCollection implements RouteCollectionInterface
14
{
15
    /**
16
     * @var \Symfony\Component\Routing\RouteCollection
17
     */
18
    private $routeCollection;
19
20
    /**
21
     * RouteCollection constructor.
22
     *
23
     * @param \Symfony\Component\Routing\RouteCollection $routeCollection
24
     */
25 1
    public function __construct(SymfonyRouteCollection $routeCollection)
26
    {
27 1
        $this->routeCollection = $routeCollection;
28 1
    }
29
30
    /**
31
     * @return \Symfony\Component\Routing\RouteCollection
32
     */
33 2
    public function getRouteCollection()
34
    {
35 2
        return $this->routeCollection;
36
    }
37
38
    /**
39
     * @param \DataProvider\RouteCollectionDataProvider $dataProvider
40
     */
41 2
    public function addRouteCollection(RouteCollectionDataProvider $dataProvider): void
42
    {
43 2
        foreach ($dataProvider->getRoutes() as $route) {
44 2
            $this->routeCollection->add(
45 2
                $route->getName(),
46 2
                $this->getSymfonyRouteFromDataProvider($route)
47
            );
48
        }
49 2
    }
50
51
    /**
52
     * @param \DataProvider\RouteDataProvider $route
53
     *
54
     * @return \Symfony\Component\Routing\Route
55
     */
56 2
    private function getSymfonyRouteFromDataProvider(RouteDataProvider $route): SymfonyRoute
57
    {
58 2
        return new Route(
59 2
            $this->getRoutePath($route),
60 2
            $this->getRouteDefaults($route),
61 2
            $this->getRouteRequirements($route),
62 2
            $this->getRouteOptions($route),
63 2
            $this->getRouteHost($route),
64 2
            $this->getRouteSchemas($route),
65 2
            $this->getRouteMethods($route)
66
        );
67
    }
68
69
    /**
70
     * @param \DataProvider\RouteDataProvider $route
71
     *
72
     * @return string
73
     */
74 2
    private function getRoutePath(RouteDataProvider $route): string
75
    {
76 2
        return $route->hasPath() ? $route->getPath() : '/';
77
    }
78
79
    /**
80
     * @param \DataProvider\RouteDataProvider $route
81
     *
82
     * @return array
83
     */
84 2
    private function getRouteDefaults(RouteDataProvider $route): array
85
    {
86 2
        return $route->hasDefaults() ? $route->getDefaults() : [];
87
    }
88
89
    /**
90
     * @param \DataProvider\RouteDataProvider $route
91
     *
92
     * @return array
93
     */
94 2
    private function getRouteRequirements(RouteDataProvider $route): array
95
    {
96 2
        return $route->hasRequirements() ? $route->getRequirements() : [];
97
    }
98
99
    /**
100
     * @param \DataProvider\RouteDataProvider $route
101
     *
102
     * @return array
103
     */
104 2
    private function getRouteOptions(RouteDataProvider $route): array
105
    {
106 2
        return $route->hasOptions() ? $route->getOptions() : [];
107
    }
108
109
    /**
110
     * @param \DataProvider\RouteDataProvider $route
111
     *
112
     * @return string
113
     */
114 2
    private function getRouteHost(RouteDataProvider $route): string
115
    {
116 2
        return $route->hasHost() ? $route->getHost() : '';
117
    }
118
119
    /**
120
     * @param \DataProvider\RouteDataProvider $route
121
     *
122
     * @return array
123
     */
124 2
    private function getRouteSchemas(RouteDataProvider $route): array
125
    {
126 2
        return $route->hasSchemes() ? $route->getSchemes() : [];
127
    }
128
129
    /**
130
     * @param \DataProvider\RouteDataProvider $route
131
     *
132
     * @return array
133
     */
134 2
    private function getRouteMethods(RouteDataProvider $route): array
135
    {
136 2
        return $route->hasMethods() ? $route->getMethods() : [];
137
    }
138
}
139