Code Coverage
 
Lines
Branches
Paths
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
Middleware
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 process
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 handle
n/a
0 / 0
n/a
0 / 0
n/a
0 / 0
n/a
0 / 0
0
1<?php
2
3declare(strict_types=1);
4
5namespace Celemas\Core;
6
7use Override;
8use Psr\Http\Message\ResponseInterface;
9use Psr\Http\Message\ServerRequestInterface;
10use Psr\Http\Server\MiddlewareInterface;
11use Psr\Http\Server\RequestHandlerInterface;
12
13/** @api */
14abstract class Middleware implements MiddlewareInterface
15{
16    #[Override]
17    public function process(
18        ServerRequestInterface $request,
19        RequestHandlerInterface $handler,
20    ): ResponseInterface {
21        return $this->handle(
22            new Request($request),
23            static fn(Request $request): Response => new Response($handler->handle($request->unwrap())),
24        )->unwrap();
25    }
26
27    /**
28     * @param callable(Request): Response $next
29     */
30    abstract public function handle(Request $request, callable $next): Response;
31}