Completed
Push — master ( 9a342a...a162ae )
by Andrii
13:06
created

RequestHandler::handle()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 26
rs 9.504
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace hiapi\Core\Http\Psr15;
4
5
use hiapi\Core\Endpoint\EndpointProcessor;
6
use hiapi\Core\Endpoint\EndpointRepository;
7
use hiapi\Core\Http\Psr15\Middleware\AuthMiddleware;
8
use hiapi\Core\Http\Psr15\Middleware\BlacklistMiddleware;
9
use hiapi\Core\Http\Psr15\Middleware\ClientIpMiddleware;
10
use hiapi\Core\Http\Psr15\Middleware\CommandForEndpointMiddleware;
11
use hiapi\Core\Http\Psr15\Middleware\CorsMiddleware;
12
use hiapi\Core\Http\Psr15\Middleware\ExceptionMiddleware;
13
use hiapi\Core\Http\Psr15\Middleware\FallbackToLegacyApiMiddleware;
14
use hiapi\Core\Http\Psr15\Middleware\QuietMiddleware;
15
use hiapi\Core\Http\Psr15\Middleware\ResolveEndpointMiddleware;
16
use hiapi\Core\Http\Psr15\Middleware\RunEndpointBusMiddleware;
17
use hiapi\Core\Http\Psr15\Middleware\UseBaseMiddleware;
18
use Lcobucci\ContentNegotiation\ContentTypeMiddleware;
19
use Psr\Container\ContainerInterface;
20
use Psr\Http\Message\ResponseInterface;
21
use Psr\Http\Message\ServerRequestInterface;
22
use Psr\Http\Server\RequestHandlerInterface;
23
use Relay\Relay;
24
25
class RequestHandler implements RequestHandlerInterface
26
{
27
    /**
28
     * @var ContainerInterface
29
     */
30
    private $di;
31
32
    public function __construct(ContainerInterface $container)
33
    {
34
        $this->di = $container;
35
    }
36
37
    /**
38
     * @inheritDoc
39
     */
40
    public function handle(ServerRequestInterface $request): ResponseInterface
41
    {
42
        $httpMiddlewares = [];
43
        $httpMiddlewares[] = $this->di->get(QuietMiddleware::class);
44
        $httpMiddlewares[] = $this->di->get(ContentTypeMiddleware::class);
45
        $httpMiddlewares[] = $this->di->get(ExceptionMiddleware::class);
46
        $httpMiddlewares[] = $this->di->get(BlacklistMiddleware::class);
47
        $httpMiddlewares[] = $this->di->get(ClientIpMiddleware::class);
48
        $httpMiddlewares[] = $this->di->get(AuthMiddleware::class);
49
        $httpMiddlewares[] = $this->di->get(CorsMiddleware::class);
50
51
        $httpMiddlewares[] = $this->di->get(FallbackToLegacyApiMiddleware::class)
52
            ->newMiddlewares([
53
                $this->di->get(ResolveEndpointMiddleware::class),
54
                $this->di->get(CommandForEndpointMiddleware::class),
55
                $this->di->get(RunEndpointBusMiddleware::class),
56
            ])
57
            ->legacyMiddlewares([
58
                $this->di->get(UseBaseMiddleware::class),
59
            ]);
60
61
        $relay = new Relay($httpMiddlewares);
62
        $response = $relay->handle($request);
63
64
        return $response;
65
    }
66
}
67