CallbackMiddleware   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 41
ccs 11
cts 11
cp 1
rs 10
c 0
b 0
f 0
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A handleResponse() 0 5 1
A __construct() 0 7 2
A handleRequest() 0 5 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Buzz\Middleware;
6
7
use Buzz\Exception\InvalidArgumentException;
8
use Psr\Http\Message\RequestInterface;
9
use Psr\Http\Message\ResponseInterface;
10
11
/**
12
 * @author Tobias Nyholm <[email protected]>
13
 */
14
class CallbackMiddleware implements MiddlewareInterface
15
{
16
    private $callable;
17
18
    /**
19
     * The callback should expect either one or two arguments, depending on
20
     * whether it is receiving a pre or post send notification.
21
     *
22
     *     $middleware = new CallbackMiddleware(function($request, $response = null) {
23
     *         if ($response) {
24
     *             // postSend
25
     *         } else {
26
     *             // preSend
27
     *         }
28
     *     });
29
     *
30
     * @param mixed $callable A PHP callable
31
     *
32
     * @throws InvalidArgumentException If the argument is not callable
33
     */
34 2
    public function __construct($callable)
35
    {
36 2
        if (!\is_callable($callable)) {
37 1
            throw new InvalidArgumentException('The argument is not callable.');
38
        }
39
40 1
        $this->callable = $callable;
41 1
    }
42
43 1
    public function handleRequest(RequestInterface $request, callable $next)
44
    {
45 1
        $request = \call_user_func($this->callable, $request);
46
47 1
        return $next($request);
48
    }
49
50 1
    public function handleResponse(RequestInterface $request, ResponseInterface $response, callable $next)
51
    {
52 1
        $response = \call_user_func($this->callable, $request, $response);
53
54 1
        return $next($request, $response);
55
    }
56
}
57