Passed
Push — main ( 085d3b...16bf0e )
by Thomas
02:32
created

Middleware::process()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 5
c 1
b 0
f 0
dl 0
loc 8
ccs 7
cts 7
cp 1
rs 10
cc 1
nc 1
nop 2
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Conia\Http;
6
7
use Psr\Http\Message\ResponseInterface;
8
use Psr\Http\Message\ServerRequestInterface;
9
use Psr\Http\Server\MiddlewareInterface;
10
use Psr\Http\Server\RequestHandlerInterface;
11
12
/** @psalm-api */
13
abstract class Middleware implements MiddlewareInterface
14
{
15 1
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
16
    {
17 1
        return $this->handle(
18 1
            new Request($request),
19 1
            function (Request $request) use ($handler): Response {
20 1
                return new Response($handler->handle($request->unwrap()));
21 1
            }
22 1
        )->unwrap();
23
    }
24
25
    /**
26
     * @param callable(Request): Response $next
27
     */
28
    abstract public function handle(Request $request, callable $next): Response;
29
}
30