ClosureToMiddleware::process()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 6
cts 6
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 6
nc 2
nop 2
crap 2
1
<?php
2
3
namespace Xoops\Frame\Panel;
4
5
use Psr\Http\Message\ResponseInterface;
6
use Psr\Http\Message\ServerRequestInterface;
7
use Psr\Http\Server\MiddlewareInterface;
8
use Psr\Http\Server\RequestHandlerInterface;
9
use Closure;
10
11
class ClosureToMiddleware implements MiddlewareInterface
12
{
13
14
    /** @var Closure $closure */
15
    protected $closure;
16
17
    /**
18
     * ClosureToMiddleware constructor.
19
     *
20
     * @param Closure $closure
21
     */
22 3
    public function __construct(Closure $closure)
23
    {
24 3
        $this->closure = $closure;
25 3
    }
26
27
    /**
28
     * Process an incoming server request and return a response, optionally delegating
29
     * response creation to a handler.
30
     *
31
     * Here, we will use the Closure set at instantiation, passing it ($request, $handler)
32
     *
33
     * @param ServerRequestInterface $request an Http Request
34
     * @param RequestHandlerInterface $handler
35
     *
36
     * @return ResponseInterface
37
     */
38 2
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
39
    {
40 2
        $closure = $this->closure;
41 2
        $response = $closure($request, $handler);
42
        // we cannot guarantee the closure follows the rules and returns a response
43
        // if it doesn't, delegate to the passed handler
44 2
        if (!($response instanceof ResponseInterface)) {
45 1
            $response = $handler->handle($request);
46
        }
47 2
        return $response;
48
    }
49
}
50