From db738a0d63910ba34d83ecad3b49e4e3c2820456 Mon Sep 17 00:00:00 2001 From: Aleksei Khudiakov Date: Fri, 17 Nov 2017 17:15:47 +1000 Subject: [PATCH 1/3] Add webimpress/http-middleware-compatibility support zend-stratigility 2.1 added webimpress/http-middleware-compatibility to support all versions of http-interop/http-middleware. --- composer.json | 2 +- composer.lock | 128 +++++++++++++++++++++++++++----- src/MiddlewareListener.php | 8 +- test/MiddlewareListenerTest.php | 2 +- 4 files changed, 118 insertions(+), 22 deletions(-) diff --git a/composer.json b/composer.json index 983bfa5e3..ffba5d9c7 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,7 @@ "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-json": "^2.6.1 || ^3.0", "zendframework/zend-psr7bridge": "^0.2", - "zendframework/zend-stratigility": "^2.0.1" + "zendframework/zend-stratigility": "^2.1" }, "suggest": { "zendframework/zend-json": "(^2.6.1 || ^3.0) To auto-deserialize JSON body content in AbstractRestfulController extensions, when json_decode is unavailable", diff --git a/composer.lock b/composer.lock index 1b0ce6676..36ba3e032 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "6124550dc3f257f3f003397fffef3ddd", + "content-hash": "ffa6fcf8d2bae038d1b04408748bb963", "packages": [ { "name": "container-interop/container-interop", @@ -825,16 +825,16 @@ }, { "name": "http-interop/http-middleware", - "version": "0.4.1", + "version": "0.5.0", "source": { "type": "git", "url": "https://github.com/http-interop/http-middleware.git", - "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9" + "reference": "b49e1f9f6c584e704317b563302e566b8ce11858" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/http-interop/http-middleware/zipball/9a801fe60e70d5d608b61d56b2dcde29516c81b9", - "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9", + "url": "https://api.github.com/repos/http-interop/http-middleware/zipball/b49e1f9f6c584e704317b563302e566b8ce11858", + "reference": "b49e1f9f6c584e704317b563302e566b8ce11858", "shasum": "" }, "require": { @@ -849,7 +849,7 @@ }, "autoload": { "psr-4": { - "Interop\\Http\\ServerMiddleware\\": "src/" + "Interop\\Http\\Server\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -864,16 +864,16 @@ ], "description": "Common interface for HTTP server-side middleware", "keywords": [ - "factory", "http", "middleware", "psr", - "psr-17", + "psr-15", "psr-7", "request", "response" ], - "time": "2017-01-14T15:23:42+00:00" + "abandoned": "http-interop/http-server-middleware", + "time": "2017-09-18T15:27:03+00:00" }, { "name": "myclabs/deep-copy", @@ -2348,6 +2348,98 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "time": "2017-04-07T12:08:54+00:00" }, + { + "name": "webimpress/composer-extra-dependency", + "version": "0.2.2", + "source": { + "type": "git", + "url": "https://github.com/webimpress/composer-extra-dependency.git", + "reference": "31fa56391d30f03b1180c87610cbe22254780ad9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webimpress/composer-extra-dependency/zipball/31fa56391d30f03b1180c87610cbe22254780ad9", + "reference": "31fa56391d30f03b1180c87610cbe22254780ad9", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "composer/composer": "^1.5.2", + "mikey179/vfsstream": "^1.6.5", + "phpunit/phpunit": "^5.7.22 || ^6.4.1", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Webimpress\\ComposerExtraDependency\\Plugin" + }, + "autoload": { + "psr-4": { + "Webimpress\\ComposerExtraDependency\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "Composer plugin to require extra dependencies", + "homepage": "https://github.com/webimpress/composer-extra-dependency", + "keywords": [ + "composer", + "dependency", + "webimpress" + ], + "time": "2017-10-17T17:15:14+00:00" + }, + { + "name": "webimpress/http-middleware-compatibility", + "version": "0.1.4", + "source": { + "type": "git", + "url": "https://github.com/webimpress/http-middleware-compatibility.git", + "reference": "8ed1c2c7523dce0035b98bc4f3a73ca9cd1d3717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webimpress/http-middleware-compatibility/zipball/8ed1c2c7523dce0035b98bc4f3a73ca9cd1d3717", + "reference": "8ed1c2c7523dce0035b98bc4f3a73ca9cd1d3717", + "shasum": "" + }, + "require": { + "http-interop/http-middleware": "^0.1.1 || ^0.2 || ^0.3 || ^0.4.1 || ^0.5", + "php": "^5.6 || ^7.0", + "webimpress/composer-extra-dependency": "^0.2.2" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.23 || ^6.4.3" + }, + "type": "library", + "extra": { + "dependency": [ + "http-interop/http-middleware" + ] + }, + "autoload": { + "files": [ + "autoload/http-middleware.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "Compatibility library for Draft PSR-15 HTTP Middleware", + "homepage": "https://github.com/webimpress/http-middleware-compatibility", + "keywords": [ + "middleware", + "psr-15", + "webimpress" + ], + "time": "2017-10-17T17:31:10+00:00" + }, { "name": "webmozart/assert", "version": "1.2.0", @@ -2580,27 +2672,27 @@ }, { "name": "zendframework/zend-stratigility", - "version": "2.0.1", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-stratigility.git", - "reference": "229e7d94010d09d9e68096ff6f1d35f354d8dac9" + "reference": "7dfec8dee92dad0d01e68365015f2848c250fe9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-stratigility/zipball/229e7d94010d09d9e68096ff6f1d35f354d8dac9", - "reference": "229e7d94010d09d9e68096ff6f1d35f354d8dac9", + "url": "https://api.github.com/repos/zendframework/zend-stratigility/zipball/7dfec8dee92dad0d01e68365015f2848c250fe9f", + "reference": "7dfec8dee92dad0d01e68365015f2848c250fe9f", "shasum": "" }, "require": { - "http-interop/http-middleware": "^0.4.1", "php": "^5.6 || ^7.0", "psr/http-message": "^1.0", + "webimpress/http-middleware-compatibility": "^0.1.3", "zendframework/zend-escaper": "^2.3" }, "require-dev": { "malukenho/docheader": "^0.1.5", - "phpunit/phpunit": "^5.7", + "phpunit/phpunit": "^6.0.8 || ^5.7.15", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-diactoros": "^1.0" }, @@ -2610,8 +2702,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.0-dev", - "dev-develop": "2.1.0-dev" + "dev-master": "2.1.0-dev", + "dev-develop": "2.2.0-dev" } }, "autoload": { @@ -2630,7 +2722,7 @@ "middleware", "psr-7" ], - "time": "2017-01-25T19:16:16+00:00" + "time": "2017-10-12T13:14:14+00:00" } ], "aliases": [], diff --git a/src/MiddlewareListener.php b/src/MiddlewareListener.php index e32354936..4d2593564 100644 --- a/src/MiddlewareListener.php +++ b/src/MiddlewareListener.php @@ -12,11 +12,12 @@ use Psr\Http\Message\ResponseInterface as PsrResponseInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface as PsrServerRequestInterface; +use Webimpress\HttpMiddlewareCompatibility\MiddlewareInterface as CompatMiddleware; use Zend\EventManager\AbstractListenerAggregate; use Zend\EventManager\EventManagerInterface; +use Zend\Mvc\Controller\MiddlewareController; use Zend\Mvc\Exception\InvalidMiddlewareException; use Zend\Mvc\Exception\ReachedFinalHandlerException; -use Zend\Mvc\Controller\MiddlewareController; use Zend\Psr7Bridge\Psr7Response; use Zend\Router\RouteMatch; use Zend\Stratigility\Delegate\CallableDelegateDecorator; @@ -142,7 +143,10 @@ private function createPipeFromSpec( if (is_string($middlewareToBePiped) && $serviceLocator->has($middlewareToBePiped)) { $middlewareToBePiped = $serviceLocator->get($middlewareToBePiped); } - if (! $middlewareToBePiped instanceof MiddlewareInterface && ! is_callable($middlewareToBePiped)) { + if (! $middlewareToBePiped instanceof MiddlewareInterface + && ! $middlewareToBePiped instanceof CompatMiddleware + && ! is_callable($middlewareToBePiped) + ) { throw InvalidMiddlewareException::fromMiddlewareName($middlewareName); } diff --git a/test/MiddlewareListenerTest.php b/test/MiddlewareListenerTest.php index aa994fbda..b9c39ae29 100644 --- a/test/MiddlewareListenerTest.php +++ b/test/MiddlewareListenerTest.php @@ -8,7 +8,7 @@ namespace ZendTest\Mvc; use Interop\Container\ContainerInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; +use Webimpress\HttpMiddlewareCompatibility\MiddlewareInterface; use PHPUnit\Framework\TestCase; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; From 4646699f9c7db1ca025c9db46c2c735dfa8098c6 Mon Sep 17 00:00:00 2001 From: Aleksei Khudiakov Date: Fri, 17 Nov 2017 18:24:10 +1000 Subject: [PATCH 2/3] Add CHANGELOG for #260 --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3e732384..b69203d56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,10 @@ All notable changes to this project will be documented in this file, in reverse ### Added -- Nothing. +- [#260](https://github.com/zendframework/zend-mvc/pull/260) adds support for + http-interop/http-middleware 0.5.0 via a polyfill provided by the package + webimpress/http-middleware-compatibility. This in turn adds full support for + zend-stratigility ^2.1 ### Deprecated From f50774314033f51ea9a2dc24917fee45497881be Mon Sep 17 00:00:00 2001 From: Aleksei Khudiakov Date: Sat, 18 Nov 2017 01:15:49 +1000 Subject: [PATCH 3/3] Update suggestion for stratigility --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index ffba5d9c7..fcf6a2bfb 100644 --- a/composer.json +++ b/composer.json @@ -42,7 +42,7 @@ "zendframework/zend-paginator": "^2.7 To provide pagination functionality via PaginatorPluginManager", "zendframework/zend-psr7bridge": "(^0.2) To consume PSR-7 middleware within the MVC workflow", "zendframework/zend-servicemanager-di": "zend-servicemanager-di provides utilities for integrating zend-di and zend-servicemanager in your zend-mvc application", - "zendframework/zend-stratigility": "zend-stratigility is required to use middleware pipes in the MiddlewareListener" + "zendframework/zend-stratigility": "^2.1 zend-stratigility is required to use middleware pipes in the MiddlewareListener" }, "config": { "sort-packages": true