Completed
Push — master ( 723741...e2f01d )
by smiley
02:37
created

QueueRunner::handle()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 1
dl 0
loc 10
rs 9.9332
c 0
b 0
f 0
1
<?php
2
/**
3
 * Class QueueRunner
4
 *
5
 * @link https://www.php-fig.org/psr/psr-15/meta/
6
 *
7
 * @filesource   QueueRunner.php
8
 * @created      10.03.2019
9
 * @package      chillerlan\HTTP\Psr15
10
 * @author       smiley <[email protected]>
11
 * @copyright    2019 smiley
12
 * @license      MIT
13
 */
14
15
namespace chillerlan\HTTP\Psr15;
16
17
use Psr\Http\Message\{ResponseInterface, ServerRequestInterface};
18
use Psr\Http\Server\RequestHandlerInterface;
19
20
class QueueRunner implements RequestHandlerInterface{
21
22
	/**
23
	 * @var \Psr\Http\Server\MiddlewareInterface[]
24
	 */
25
	private $middlewareStack;
26
27
	/**
28
	 * @var \Psr\Http\Server\RequestHandlerInterface
29
	 */
30
	private $fallbackHandler;
31
32
	/**
33
	 *  constructor.
34
	 *
35
	 * @param array                                    $middlewareStack
36
	 * @param \Psr\Http\Server\RequestHandlerInterface $fallbackHandler
37
	 */
38
	public function __construct(array $middlewareStack, RequestHandlerInterface $fallbackHandler){
39
		$this->middlewareStack = $middlewareStack;
40
		$this->fallbackHandler = $fallbackHandler;
41
	}
42
43
	/**
44
	 * @inheritDoc
45
	 */
46
	public function handle(ServerRequestInterface $request):ResponseInterface{
47
48
		if(empty($this->middlewareStack)){
49
			return $this->fallbackHandler->handle($request);
50
		}
51
52
		$middleware = \array_shift($this->middlewareStack);
53
54
		return $middleware->process($request, $this);
55
	}
56
57
}
58