Skip to content

Commit 6d8a29e

Browse files
committed
Added support for http-interop/http-middleware 0.5.0
We keep also support for previous versions. Now consumer of the library can choose version of http-middleware to use, and it allows to update to the lates version at any time. We are using webimpress/http-middleware-compatibility library to make it possible.
1 parent b97e804 commit 6d8a29e

File tree

4 files changed

+112
-31
lines changed

4 files changed

+112
-31
lines changed

composer.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,18 @@
2020
"slack": "https://zendframework-slack.herokuapp.com",
2121
"forum": "https://discourse.zendframework.com/c/questions/expressive"
2222
},
23+
"repositories": [
24+
{
25+
"type": "vcs",
26+
"url": "git://github.com/webimpress/zend-expressive-router.git"
27+
}
28+
],
2329
"require": {
24-
"http-interop/http-middleware": "^0.4.1",
2530
"php": "^7.1",
2631
"psr/container": "^1.0",
2732
"psr/http-message": "^1.0.1",
28-
"zendframework/zend-expressive-router": "^2.1.0"
33+
"webimpress/http-middleware-compatibility": "^0.1.1",
34+
"zendframework/zend-expressive-router": "dev-feature/http-middleware-0.5"
2935
},
3036
"require-dev": {
3137
"phpunit/phpunit": "^6.0.8",

composer.lock

Lines changed: 92 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/AuthorizationMiddleware.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77

88
namespace Zend\Expressive\Authorization;
99

10-
use Interop\Http\ServerMiddleware\DelegateInterface;
11-
use Interop\Http\ServerMiddleware\MiddlewareInterface as ServerMiddlewareInterface;
1210
use Psr\Http\Message\ResponseInterface;
1311
use Psr\Http\Message\ServerRequestInterface;
12+
use Webimpress\HttpMiddlewareCompatibility\HandlerInterface;
13+
use Webimpress\HttpMiddlewareCompatibility\MiddlewareInterface;
1414

15-
class AuthorizationMiddleware implements ServerMiddlewareInterface
15+
use const Webimpress\HttpMiddlewareCompatibility\HANDLER_METHOD;
16+
17+
class AuthorizationMiddleware implements MiddlewareInterface
1618
{
1719
/**
1820
* @var AuthorizationInterface
@@ -34,7 +36,7 @@ public function __construct(AuthorizationInterface $authorization, ResponseInter
3436
* {@inheritDoc}
3537
* @todo Use role/identity interface from zend-expressive-authentication once published.
3638
*/
37-
public function process(ServerRequestInterface $request, DelegateInterface $delegate)
39+
public function process(ServerRequestInterface $request, HandlerInterface $handler)
3840
{
3941
$role = $request->getAttribute(AuthorizationInterface::class, false);
4042

@@ -43,7 +45,7 @@ public function process(ServerRequestInterface $request, DelegateInterface $dele
4345
}
4446

4547
return $this->authorization->isGranted($role, $request)
46-
? $delegate->process($request)
48+
? $handler->{HANDLER_METHOD}($request)
4749
: $this->responsePrototype->withStatus(403);
4850
}
4951
}

test/AuthorizationMiddlewareTest.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,23 @@
77

88
namespace ZendTest\Expressive\Authorization;
99

10-
use Interop\Http\ServerMiddleware\DelegateInterface;
1110
use PHPUnit\Framework\TestCase;
1211
use Prophecy\Argument;
1312
use Psr\Http\Message\ResponseInterface;
1413
use Psr\Http\Message\ServerRequestInterface;
14+
use Webimpress\HttpMiddlewareCompatibility\HandlerInterface;
1515
use Zend\Expressive\Authorization\AuthorizationInterface;
1616
use Zend\Expressive\Authorization\AuthorizationMiddleware;
17-
use Zend\Expressive\Router\RouteResult;
17+
18+
use const Webimpress\HttpMiddlewareCompatibility\HANDLER_METHOD;
1819

1920
class AuthorizationMiddlewareTest extends TestCase
2021
{
2122
protected function setUp()
2223
{
2324
$this->authorization = $this->prophesize(AuthorizationInterface::class);
2425
$this->request = $this->prophesize(ServerRequestInterface::class);
25-
$this->delegate = $this->prophesize(DelegateInterface::class);
26+
$this->delegate = $this->prophesize(HandlerInterface::class);
2627
$this->response = $this->prophesize(ResponseInterface::class);
2728
}
2829

@@ -69,7 +70,7 @@ public function testProcessRoleGranted()
6970
$this->authorization->isGranted('foo', $this->request->reveal())->willReturn(true);
7071

7172
$middleware = new AuthorizationMiddleware($this->authorization->reveal(), $this->response->reveal());
72-
$this->delegate->process(Argument::any())->willReturn($this->response->reveal());
73+
$this->delegate->{HANDLER_METHOD}(Argument::any())->willReturn($this->response->reveal());
7374

7475
$response = $middleware->process(
7576
$this->request->reveal(),

0 commit comments

Comments
 (0)