1
+ <?php
2
+
3
+ namespace Mouf \Mvc \Splash ;
4
+
5
+ use Mouf \Utils \Common \Condition \ToCondition ;
6
+ use Psr \Http \Message \ResponseInterface ;
7
+ use Psr \Http \Message \ServerRequestInterface ;
8
+ use Psr \Http \Server \MiddlewareInterface ;
9
+ use Psr \Http \Server \RequestHandlerInterface ;
10
+
11
+ /**
12
+ * A middleware used to conditionally redirect to other middleware(s)
13
+ *
14
+ * Class ConditionMiddleware
15
+ * @package Mouf\Mvc\Splash
16
+ */
17
+ class ConditionMiddleware implements MiddlewareInterface{
18
+
19
+ /**
20
+ * @var callable
21
+ */
22
+ private $ condition ;
23
+ /**
24
+ * @var MiddlewareInterface
25
+ */
26
+ private $ ifMiddleware ;
27
+ /**
28
+ * @var MiddlewareInterface
29
+ */
30
+ private $ elseMiddleware ;
31
+
32
+ public function __construct (ToCondition $ condition , MiddlewareInterface $ ifMiddleware , MiddlewareInterface $ elseMiddleware = null )
33
+ {
34
+ $ this ->condition = $ condition ;
35
+ $ this ->ifMiddleware = $ ifMiddleware ;
36
+ $ this ->elseMiddleware = $ elseMiddleware ;
37
+ }
38
+
39
+ /**
40
+ * Process an incoming server request and return a response, optionally delegating
41
+ * response creation to a handler.
42
+ */
43
+ public function process (ServerRequestInterface $ request , RequestHandlerInterface $ handler ): ResponseInterface
44
+ {
45
+ if ($ this ->condition ->isOk ()) {
46
+ $ this ->ifMiddleware ->process ($ request , $ handler );
47
+ } else if ($ this ->elseMiddleware ) {
48
+ $ this ->elseMiddleware ->process ($ request , $ handler );
49
+ } else {
50
+ $ handler ->handle ($ request );
51
+ }
52
+ }
53
+ }
0 commit comments