RequestMiddlewaresAwareTrait   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 6
cbo 1
dl 0
loc 74
ccs 16
cts 16
cp 1
rs 10
c 0
b 0
f 0
lcom 1

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getRequestMiddlewares() 0 10 2
A setRequestMiddlewares() 0 6 1
A addPreMiddleware() 0 6 1
A addPostMiddleware() 0 6 1
A executeMiddlewares() 0 8 1
1
<?php
2
3
namespace Thruster\Component\HttpMiddleware;
4
5
use Psr\Http\Message\ResponseInterface;
6
use Psr\Http\Message\ServerRequestInterface;
7
8
/**
9
 * Trait RequestMiddlewaresAwareTrait
10
 *
11
 * @package Thruster\Component\HttpMiddleware
12
 * @author  Aurimas Niekis <[email protected]>
13
 */
14
trait RequestMiddlewaresAwareTrait
15
{
16
    /**
17
     * @var RequestMiddlewares
18
     */
19
    protected $requestMiddlewares;
20
21
    /**
22
     * @return RequestMiddlewares
23
     */
24 2
    public function getRequestMiddlewares() : RequestMiddlewares
25
    {
26 2
        if ($this->requestMiddlewares) {
27 2
            return $this->requestMiddlewares;
28
        }
29
30 1
        $this->requestMiddlewares = new RequestMiddlewares();
31
32 1
        return $this->requestMiddlewares;
33
    }
34
35
    /**
36
     * @param RequestMiddlewares $requestMiddlewares
37
     *
38
     * @return $this
39
     */
40 1
    public function setRequestMiddlewares(RequestMiddlewares $requestMiddlewares)
41
    {
42 1
        $this->requestMiddlewares = $requestMiddlewares;
43
44 1
        return $this;
45
    }
46
47
    /**
48
     * @param callable $middleware
49
     *
50
     * @return $this
51
     */
52 2
    public function addPreMiddleware(callable $middleware)
53
    {
54 2
        $this->getRequestMiddlewares()->pre($middleware);
55
56 2
        return $this;
57
    }
58
59
    /**
60
     * @param callable $middleware
61
     *
62
     * @return $this
63
     */
64 2
    public function addPostMiddleware(callable $middleware)
65
    {
66 2
        $this->getRequestMiddlewares()->post($middleware);
67
68 2
        return $this;
69
    }
70
71
    /**
72
     * @param ServerRequestInterface $request
73
     * @param ResponseInterface      $response
74
     * @param callable               $requestHandler
75
     * @param callable               $next
76
     *
77
     * @return ResponseInterface
78
     */
79 1
    public function executeMiddlewares(
80
        ServerRequestInterface $request,
81
        ResponseInterface $response,
82
        callable $requestHandler = null,
83
        callable $next = null
84
    ) : ResponseInterface {
85 1
        return $this->getRequestMiddlewares()->__invoke($request, $response, $requestHandler, $next);
86
    }
87
}
88