File tree Expand file tree Collapse file tree 2 files changed +101
-0
lines changed Expand file tree Collapse file tree 2 files changed +101
-0
lines changed Original file line number Diff line number Diff line change 1+ <?php declare (strict_types=1 );
2+
3+ /**
4+ * It's free open-source software released under the MIT License.
5+ *
6+ * @author Anatoly Fenric <[email protected] > 7+ * @copyright Copyright (c) 2018, Anatoly Fenric
8+ * @license https://github.com/sunrise-php/http-router/blob/master/LICENSE
9+ * @link https://github.com/sunrise-php/http-router
10+ */
11+
12+ namespace Sunrise \Http \Router \Middleware ;
13+
14+ /**
15+ * Import classes
16+ */
17+ use Psr \Http \Message \ResponseInterface ;
18+ use Psr \Http \Message \ServerRequestInterface ;
19+ use Psr \Http \Server \MiddlewareInterface ;
20+ use Psr \Http \Server \RequestHandlerInterface ;
21+
22+ /**
23+ * CallableMiddleware
24+ *
25+ * @since 2.8.0
26+ */
27+ class CallableMiddleware implements MiddlewareInterface
28+ {
29+
30+ /**
31+ * The middleware callback
32+ *
33+ * @var callable
34+ */
35+ private $ callback ;
36+
37+ /**
38+ * Constructor of the class
39+ *
40+ * @param callable $callback
41+ */
42+ public function __construct (callable $ callback )
43+ {
44+ $ this ->callback = $ callback ;
45+ }
46+
47+ /**
48+ * {@inheritDoc}
49+ */
50+ public function process (ServerRequestInterface $ request , RequestHandlerInterface $ handler ) : ResponseInterface
51+ {
52+ return ($ this ->callback )($ request , $ handler );
53+ }
54+ }
Original file line number Diff line number Diff line change 1+ <?php declare (strict_types=1 );
2+
3+ namespace Sunrise \Http \Router \Tests \Middleware ;
4+
5+ /**
6+ * Import classes
7+ */
8+ use PHPUnit \Framework \TestCase ;
9+ use Psr \Http \Server \MiddlewareInterface ;
10+ use Sunrise \Http \Router \Middleware \CallableMiddleware ;
11+ use Sunrise \Http \Router \Tests \Fixture ;
12+ use Sunrise \Http \ServerRequest \ServerRequestFactory ;
13+
14+ /**
15+ * CallableMiddlewareTest
16+ */
17+ class CallableMiddlewareTest extends TestCase
18+ {
19+
20+ /**
21+ * @return void
22+ */
23+ public function testContracts () : void
24+ {
25+ $ middleware = new CallableMiddleware (function ($ request , $ handler ) {
26+ return $ handler ->handle ($ request );
27+ });
28+
29+ $ this ->assertInstanceOf (MiddlewareInterface::class, $ middleware );
30+ }
31+
32+ /**
33+ * @return void
34+ */
35+ public function testRun () : void
36+ {
37+ $ middleware = new CallableMiddleware (function ($ request , $ handler ) {
38+ return $ handler ->handle ($ request );
39+ });
40+
41+ $ request = (new ServerRequestFactory )->createServerRequest ('GET ' , '/ ' );
42+ $ requestHandler = new Fixture \BlankRequestHandler ();
43+ $ middleware ->process ($ request , $ requestHandler );
44+
45+ $ this ->assertTrue ($ requestHandler ->isRunned ());
46+ }
47+ }
You can’t perform that action at this time.
0 commit comments