Passed
Push — master ( 4347f4...650833 )
by n
01:44
created

HttpApplicationServiceProvider   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 1
lcom 0
cbo 5
dl 0
loc 29
ccs 18
cts 18
cp 1
rs 10
c 1
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B register() 0 26 1
1
<?php
2
declare(strict_types=1);
3
4
namespace N1215\Tsukuyomi\Providers;
5
6
use Illuminate\Container\Container;
7
use N1215\Http\Router\RouterInterface;
8
use N1215\Http\Router\RoutingErrorResponderInterface;
9
use N1215\Http\Router\RoutingHandler;
10
use N1215\Http\Router\RoutingHandlerInterface;
11
use N1215\Jugoya\RequestHandlerBuilderInterface;
12
use N1215\Tsukuyomi\BootLoaderInterface;
13
use N1215\Tsukuyomi\FrameworkInterface;
14
use N1215\Tsukuyomi\HttpApplication;
15
use N1215\Tsukuyomi\HttpApplicationInterface;
16
use N1215\Tsukuyomi\Event\EventManagerInterface;
17
use Zend\Diactoros\Response\SapiEmitter;
18
19
class HttpApplicationServiceProvider
20
{
21
    public function register(Container $container)
22
    {
23 1
        $container->singleton(RoutingHandlerInterface::class, function (Container $container) {
24 1
            return new RoutingHandler(
25 1
                $container->get(RouterInterface::class),
26 1
                $container->get(RoutingErrorResponderInterface::class)
27
            );
28 1
        });
29
30 1
        $container->singleton(HttpApplicationInterface::class, function (Container $container) {
31
            /** @var RequestHandlerBuilderInterface $handlerBuilder */
32 1
            $handlerBuilder = $container->get(RequestHandlerBuilderInterface::class);
33
            /** @var FrameworkInterface $framework */
34 1
            $framework = $container->get(FrameworkInterface::class);
35 1
            $middlewareConfigPath = $framework->path('config/middlewares.php');
36 1
            $middlewareClasses = require $middlewareConfigPath;
37 1
            $requestHandler = $handlerBuilder->build(RoutingHandlerInterface::class, $middlewareClasses);
38
39 1
            return new HttpApplication(
40 1
                $container->get(BootLoaderInterface::class),
41 1
                $requestHandler,
42 1
                new SapiEmitter(),
43 1
                $container->get(EventManagerInterface::class)
44
            );
45 1
        });
46 1
    }
47
}
48