SymfonyActionRequestHandler   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 12
dl 0
loc 32
rs 10
c 2
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 10 1
A handle() 0 7 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Kafkiansky\SymfonyMiddleware\Middleware;
6
7
use Kafkiansky\SymfonyMiddleware\Psr\PsrRequestCloner;
8
use Psr\Http\Message\ResponseInterface;
9
use Psr\Http\Message\ServerRequestInterface;
10
use Psr\Http\Server\RequestHandlerInterface;
11
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
12
use Symfony\Component\HttpFoundation\Response;
13
use Kafkiansky\SymfonyMiddleware\Psr\PsrResponseTransformer;
14
15
final class SymfonyActionRequestHandler implements RequestHandlerInterface
16
{
17
    /**
18
     * @var callable(SymfonyRequest): Response
19
     */
20
    private $destination;
21
    private PsrResponseTransformer $psrResponseTransformer;
22
    private SymfonyRequest $symfonyRequest;
23
    private PsrRequestCloner $psrRequestCloner;
24
25
    /**
26
     * @param callable(SymfonyRequest): Response $destination
27
     */
28
    public function __construct(
29
        callable $destination,
30
        SymfonyRequest $symfonyRequest,
31
        PsrResponseTransformer $psrResponseTransformer,
32
        PsrRequestCloner $psrRequestCloner,
33
    ) {
34
        $this->destination = $destination;
35
        $this->psrResponseTransformer = $psrResponseTransformer;
36
        $this->symfonyRequest = $symfonyRequest;
37
        $this->psrRequestCloner = $psrRequestCloner;
38
    }
39
40
    public function handle(ServerRequestInterface $request): ResponseInterface
41
    {
42
        $clonedSymfonyRequest = $this->psrRequestCloner->clone($this->symfonyRequest, $request);
43
44
        $response = ($this->destination)($clonedSymfonyRequest);
45
46
        return $this->psrResponseTransformer->toPsrResponse($response);
47
    }
48
}
49