Skip to content

Commit 8037162

Browse files
committed
new callable middleware
1 parent bf3a1a3 commit 8037162

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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+
}

0 commit comments

Comments
 (0)