ResourceController   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 11
Bugs 2 Features 1
Metric Value
wmc 6
c 11
b 2
f 1
lcom 1
cbo 4
dl 0
loc 52
ccs 23
cts 23
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 10 1
B capabilitiesAction() 0 30 5
1
<?php
2
3
namespace Innmind\RestBundle\Controller;
4
5
use Innmind\Rest\Server\Routing\RouteKeys;
6
use Innmind\Rest\Server\Controller\ResourceController as BaseController;
7
use Innmind\Rest\Server\Storages;
8
use Innmind\Rest\Server\Registry;
9
use Symfony\Component\Routing\RouterInterface;
10
11
class ResourceController extends BaseController
12
{
13
    protected $router;
14
    protected $registry;
15
16 16
    public function __construct(
17
        Storages $storages,
18
        RouterInterface $router,
19
        Registry $registry
20
    ) {
21 16
        $this->router = $router;
22 16
        $this->registry = $registry;
23
24 16
        parent::__construct($storages);
25 16
    }
26
27
    /**
28
     * Return all the resources routes
29
     *
30
     * @return array
31
     */
32 2
    public function capabilitiesAction()
33
    {
34 2
        $routes = $this->router->getRouteCollection();
35 2
        $exposed = [];
36
37 2
        foreach ($routes as $name => $route) {
38 2
            if (!$route->hasDefault(RouteKeys::DEFINITION)) {
39 2
                continue;
40
            }
41
42 2
            if (!in_array('OPTIONS', $route->getMethods(), true)) {
43 2
                continue;
44
            }
45
46 2
            $definition = $route->getDefault(RouteKeys::DEFINITION);
47 2
            list($collection, $resource) = explode('::', $definition);
48 2
            $definition = $this
49
                ->registry
50 2
                ->getCollection($collection)
51 2
                ->getResource($resource);
52
53 2
            if ($definition->hasOption('private')) {
54 2
                continue;
55
            }
56
57 2
            $exposed[$name] = $route;
58 2
        }
59
60 2
        return $exposed;
61
    }
62
}
63