Completed
Push — master ( b1ab96...b5f370 )
by Mike
04:56
created

Service::middlewareGroupExists()   A

Complexity

Conditions 4
Paths 1

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 16
rs 9.2
c 0
b 0
f 0
cc 4
eloc 9
nc 1
nop 1
1
<?php namespace GeneaLabs\LaravelCaffeine\Providers;
2
3
use GeneaLabs\LaravelCaffeine\Http\Middleware\LaravelCaffeineDripMiddleware;
4
use Illuminate\Support\ServiceProvider;
5
6
class Service extends ServiceProvider
7
{
8
    protected $defer = false;
9
10
    public function boot()
11
    {
12
        app('router')->group($this->middlewareGroupExists('web')
13
            ? ['middleware' => 'web']
14
            : [], function () {
15
                require __DIR__ . '/../../routes/web.php';
16
            });
17
18
        $this->publishes([__DIR__ . '/../../config/genealabs-laravel-caffeine.php' => config_path('genealabs-laravel-caffeine.php')], 'genealabs-laravel-caffeine');
19
    }
20
21
    public function register()
22
    {
23
        $this->mergeConfigFrom(__DIR__ . '/../../config/genealabs-laravel-caffeine.php', 'genealabs-laravel-caffeine');
24
25
        app('Illuminate\Contracts\Http\Kernel')->pushMiddleware('\GeneaLabs\LaravelCaffeine\Http\Middleware\LaravelCaffeineDripMiddleware');
26
    }
27
28
    public function provides() : array
29
    {
30
        return ['genealabs-laravel-caffeine'];
31
    }
32
33
    private function middlewareGroupExists(string $group) : bool
34
    {
35
        $routes = collect(app('router')->getRoutes()->getRoutes());
36
37
        return $routes->reduce(function ($carry, $route) use ($group) {
38
            $carry = ($carry ?? false) ?: false;
39
            $actions = (array) $route->getAction();
40
41
            if (array_key_exists('middleware', $actions)
42
                && in_array($group, (array) $actions['middleware'])
43
            ) {
44
                return true;
45
            }
46
47
            return $carry;
48
        }) ?? false;
49
    }
50
}
51