Skip to content
This repository has been archived by the owner on Mar 7, 2023. It is now read-only.

Added http-interop/http-server-middleware support #4

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,35 @@ language: php
cache:
directories:
- $HOME/.composer/cache
- vendor

env:
- HTTP_MIDDLEWARE_VERSION="^0.1.1"
- HTTP_MIDDLEWARE_VERSION="^0.2"
- HTTP_MIDDLEWARE_VERSION="^0.3"
- HTTP_MIDDLEWARE_VERSION="^0.4.1"
- HTTP_MIDDLEWARE_VERSION="^0.5"
- HTTP_MIDDLEWARE_VERSION="dev-master"
- HTTP_MIDDLEWARE_VERSION="http-interop/http-middleware:^0.1.1"
- HTTP_MIDDLEWARE_VERSION="http-interop/http-middleware:^0.2"
- HTTP_MIDDLEWARE_VERSION="http-interop/http-middleware:^0.3"
- HTTP_MIDDLEWARE_VERSION="http-interop/http-middleware:^0.4.1"
- HTTP_MIDDLEWARE_VERSION="http-interop/http-middleware:^0.5"
- HTTP_MIDDLEWARE_VERSION="http-interop/http-server-middleware:^1.0.1"
- HTTP_MIDDLEWARE_VERSION="http-interop/http-server-middleware:dev-master"

php:
- 5.6
- 7.0
- 7.1
- 7.2

matrix:
exclude:
- php: 5.6
env: HTTP_MIDDLEWARE_VERSION="http-interop/http-server-middleware:^1.0.1"
- php: 5.6
env: HTTP_MIDDLEWARE_VERSION="http-interop/http-server-middleware:dev-master"

before_install:
- phpenv config-rm xdebug.ini || return 0
- travis_retry composer self-update

install:
- travis_retry composer require --no-interaction http-interop/http-middleware:$HTTP_MIDDLEWARE_VERSION
- travis_retry composer require --no-interaction $HTTP_MIDDLEWARE_VERSION
- travis_retry composer install --no-interaction
- if [[ $TRAVIS_PHP_VERSION =~ ^5.6 ]]; then travis_retry composer update --no-interaction --with-dependencies phpunit/phpunit ; fi
- stty cols 120 && composer show
Expand Down
11 changes: 10 additions & 1 deletion autoload/http-middleware.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class_alias(
} else {
define(__NAMESPACE__ . '\HANDLER_METHOD', 'process');
}
define(__NAMESPACE__ . '\HAS_RETURN_TYPE', false);
}

// http-interop/http-middleware 0.4.1
Expand All @@ -38,9 +39,10 @@ class_alias(
);

define(__NAMESPACE__ . '\HANDLER_METHOD', 'process');
define(__NAMESPACE__ . '\HAS_RETURN_TYPE', false);
}

// http-interop/http-middleware 0.5.0
// http-interop/http-middleware 0.5.0 && http-interop/http-server-middleware 1.0.1
if (interface_exists(\Interop\Http\Server\MiddlewareInterface::class)
&& interface_exists(\Interop\Http\Server\RequestHandlerInterface::class)
) {
Expand All @@ -55,4 +57,11 @@ class_alias(
);

define(__NAMESPACE__ . '\HANDLER_METHOD', 'handle');

if (PHP_VERSION_ID >= 70000) {
$r = new \ReflectionMethod(MiddlewareInterface::class, 'process');
define(__NAMESPACE__ . '\HAS_RETURN_TYPE', $r->hasReturnType());
} else {
define(__NAMESPACE__ . '\HAS_RETURN_TYPE', false);
}
}
14 changes: 8 additions & 6 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,19 @@
"sort-packages": true
},
"extra": {
"dependency": [
"http-interop/http-middleware"
]
"dependency-or": {
"What middleware package would you like to use?": [
"http-interop/http-middleware",
"http-interop/http-server-middleware"
]
}
},
"require": {
"php": "^5.6 || ^7.0",
"http-interop/http-middleware": "^0.1.1 || ^0.2 || ^0.3 || ^0.4.1 || ^0.5",
"webimpress/composer-extra-dependency": "^0.2.2"
"webimpress/composer-extra-dependency": "dev-feature/dependency-or as 0.3"
},
"require-dev": {
"phpunit/phpunit": "^5.7.23 || ^6.4.3"
"phpunit/phpunit": "^5.7.23 || ^6.4.4"
},
"autoload": {
"files": [
Expand Down
21 changes: 17 additions & 4 deletions test/HandlerInterfaceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
use Psr\Http\Message\ServerRequestInterface;
use ReflectionMethod;
use Webimpress\HttpMiddlewareCompatibility\HandlerInterface;

use const Webimpress\HttpMiddlewareCompatibility\HANDLER_METHOD;
use const Webimpress\HttpMiddlewareCompatibility\HAS_RETURN_TYPE;

class HandlerInterfaceTest extends TestCase
{
Expand All @@ -18,28 +19,40 @@ public function testHandlerInterfaceIsDefined()

public function testHandlerInterfaceIsAliasToBaseLibrary()
{
// 0.3.0, 0.2.0, 0.1.1
// http-middleware 0.3.0, 0.2.0, 0.1.1
if (interface_exists(\Interop\Http\Middleware\DelegateInterface::class)) {
self::assertTrue(is_a(HandlerInterface::class, \Interop\Http\Middleware\DelegateInterface::class, true));
self::assertTrue(is_a(\Interop\Http\Middleware\DelegateInterface::class, HandlerInterface::class, true));
self::assertSame(
method_exists(HandlerInterface::class, 'next') ? 'next' : 'process',
HANDLER_METHOD
);
self::assertFalse(HAS_RETURN_TYPE);

return;
}

// 0.4.1
// http-middleware 0.4.1
if (interface_exists(\Interop\Http\ServerMiddleware\DelegateInterface::class)) {
self::assertTrue(is_a(HandlerInterface::class, \Interop\Http\ServerMiddleware\DelegateInterface::class, true));
self::assertTrue(is_a(\Interop\Http\ServerMiddleware\DelegateInterface::class, HandlerInterface::class, true));
self::assertSame('process', HANDLER_METHOD);
self::assertFalse(HAS_RETURN_TYPE);

return;
}

// 0.5.0
// http-middleware 0.5.0 & http-server-middleware 1.0.1
if (interface_exists(\Interop\Http\Server\RequestHandlerInterface::class)) {
self::assertTrue(is_a(HandlerInterface::class, \Interop\Http\Server\RequestHandlerInterface::class, true));
self::assertTrue(is_a(\Interop\Http\Server\RequestHandlerInterface::class, HandlerInterface::class, true));
self::assertSame('handle', HANDLER_METHOD);
$hasReturnType = false;
if (PHP_VERSION_ID >= 70000) {
$r = new ReflectionMethod(HandlerInterface::class, 'handle');
$hasReturnType = $r->hasReturnType();
}
self::assertSame($hasReturnType, HAS_RETURN_TYPE);

return;
}
Expand Down