Passed
Push — master ( 0dde30...57f1fc )
by Jim
03:20
created

DbRouterController   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Test Coverage

Coverage 94.44%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 17
dl 0
loc 40
ccs 17
cts 18
cp 0.9444
rs 10
c 1
b 0
f 0
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A resolveRoute() 0 18 3
A __invoke() 0 3 1
A redirect() 0 3 1
A getRouteAction() 0 6 1
1
<?php
2
3
namespace Oddvalue\DbRouter\Http\Controllers;
4
5
use Oddvalue\DbRouter\Route;
6
use Illuminate\Routing\Controller;
7
use Oddvalue\DbRouter\Contracts\Routable;
8
use Illuminate\Routing\RouteDependencyResolverTrait;
9
10
class DbRouterController extends Controller
11
{
12
    use RouteDependencyResolverTrait;
0 ignored issues
show
introduced by
The trait Illuminate\Routing\RouteDependencyResolverTrait requires some properties which are not provided by Oddvalue\DbRouter\Http\C...lers\DbRouterController: $name, $container
Loading history...
13
14 9
    public function __invoke($url)
15
    {
16 9
        return $this->resolveRoute("/$url");
17
    }
18
19 9
    protected function resolveRoute($url)
20
    {
21 9
        $route = Route::whereUrl($url)->withTrashed()->firstOrFail();
22
23 9
        if ($route->shouldRedirect()) {
24 6
            return $this->redirect($route);
25
        }
26
27 3
        $routableInstance = $route->routable;
28 3
        [$controller, $action] = $this->getRouteAction($routableInstance);
29
30 3
        $parameters = $this->resolveClassMethodDependencies([$routableInstance], $controller, $action);
31
32 3
        if (method_exists($controller, 'callAction')) {
33 3
            return $controller->callAction($action, $parameters);
34
        }
35
36
        return $controller->{$action}(...array_values($parameters));
37
    }
38
39 6
    protected function redirect($route)
40
    {
41 6
        return redirect($route->redirect_url, 301);
42
    }
43
44 3
    protected function getRouteAction(Routable $routableInstance)
45
    {
46 3
        $generator = $routableInstance->getRouteGenerator();
47
        return [
48 3
            app($generator->getRouteController($routableInstance)),
49 3
            $generator->getRouteAction($routableInstance),
50
        ];
51
    }
52
}
53