Completed
Push — master ( b50a77...3596b1 )
by Oscar
04:56
created

Middleware   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 13

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 13
dl 0
loc 54
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B register() 0 51 4
1
<?php
2
3
namespace Folk\Providers;
4
5
use Fol;
6
use Fol\ServiceProviderInterface;
7
use Middlewares;
8
use mindplay\middleman\Dispatcher;
9
use Gettext\Translator;
10
use Gettext\Translations;
11
12
class Middleware implements ServiceProviderInterface
13
{
14
    public function register(Fol $app)
15
    {
16
        $app['middleware'] = function ($app) {
17
            $middleware = [];
18
19
            if ($app->has('users')) {
20
                $middleware[] = new Middlewares\DigestAuthentication($app['users']);
21
            }
22
23
            $middleware[] = new Middlewares\Expires();
24
            $middleware[] = (new Middlewares\ErrorHandler())
25
                ->catchExceptions()
26
                ->statusCode(function ($code) {
27
                    return $code > 400 && $code < 600;
28
                })
29
                ->arguments($app);
30
31
            $middleware[] = new Middlewares\BasePath($app->getUrlPath());
32
            $middleware[] = new Middlewares\TrailingSlash();
33
            $middleware[] = new Middlewares\ContentType();
34
            $middleware[] = new Middlewares\ContentLanguage(['en', 'gl', 'es']);
35
36
            $middleware[] = function ($request, $next) use ($app) {
37
                $language = $request->getHeaderLine('Accept-Language');
38
                $translator = new Translator();
39
                $translator->loadTranslations(Translations::fromPoFile(dirname(dirname(__DIR__)).'/locales/'.$language.'.po'));
40
                $prev = $translator->register();
41
42
                $app['templates']->addData(['language' => $language]);
43
44
                $response = $next($request);
45
46
                if ($prev) {
47
                    $prev->register();
48
                }
49
50
                return $response;
51
            };
52
53
            $middleware[] = (new Middlewares\MethodOverride())
54
                ->parsedBodyParameter('method-override');
55
56
            $middleware[] = (new Middlewares\Reader(dirname(dirname(__DIR__)).'/assets'))
57
                ->continueOnError();
58
59
            $middleware[] = (new Middlewares\AuraRouter($app['router']))
60
                ->arguments($app);
61
62
            return new Dispatcher($middleware);
63
        };
64
    }
65
}
66