Skip to content

Commit

Permalink
Switch to http-server-middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
oscarotero committed Nov 11, 2017
1 parent 5d62f53 commit 5c9db37
Show file tree
Hide file tree
Showing 10 changed files with 188 additions and 50 deletions.
130 changes: 130 additions & 0 deletions .php_cs
@@ -0,0 +1,130 @@
<?php

$finder = PhpCsFixer\Finder::create()
->files()
->name('*.php')
->in(__DIR__ . '/src')
->in(__DIR__ . '/tests')
;

return PhpCsFixer\Config::create()
->setRules(array(
'@PSR2' => true,
'array_syntax' => ['syntax' => 'short'],
'binary_operator_spaces' => ['align_double_arrow' => false, 'align_equals' => false],
'blank_line_after_namespace' => true,
'blank_line_after_opening_tag' => false,
'blank_line_before_return' => false,
'braces' => ['allow_single_line_closure' => false],
'cast_spaces' => true,
'class_definition' => ['singleLine' => false, 'singleItemSingleLine' => true, 'multiLineExtendsEachSingleLine' => true],
'class_keyword_remove' => false,
'combine_consecutive_unsets' => true,
'concat_space' => false,
'declare_equal_normalize' => ['space' => 'single'],
'declare_strict_types' => false,
'elseif' => true,
'encoding' => true,
'full_opening_tag' => true,
'function_declaration' => true,
'function_typehint_space' => true,
'general_phpdoc_annotation_remove' => ['expectedExceptionMessageRegExp', 'expectedException', 'expectedExceptionMessage'],
'hash_to_slash_comment' => true,
'header_comment' => false,
'heredoc_to_nowdoc' => true,
'include' => true,
'indentation_type' => true,
'line_ending' => true,
'linebreak_after_opening_tag' => true,
'lowercase_cast' => true,
'lowercase_constants' => true,
'lowercase_keywords' => true,
'mb_str_functions' => false,
'method_argument_space' => true,
'method_separation' => true,
'native_function_casing' => true,
'native_function_invocation' => false,
'new_with_braces' => true,
'no_blank_lines_after_class_opening' => true,
'no_blank_lines_after_phpdoc' => false,
'no_blank_lines_before_namespace' => false,
'no_closing_tag' => true,
'no_empty_comment' => true,
'no_empty_phpdoc' => true,
'no_empty_statement' => true,
'no_extra_consecutive_blank_lines' => ['break', 'continue', 'extra', 'return', 'throw', 'use', 'parenthesis_brace_block', 'square_brace_block', 'curly_brace_block'],
'no_leading_import_slash' => true,
'no_leading_namespace_whitespace' => true,
'no_mixed_echo_print' => ['use' => 'echo'],
'no_multiline_whitespace_around_double_arrow' => true,
'no_multiline_whitespace_before_semicolons' => true,
'no_short_bool_cast' => true,
'no_short_echo_tag' => true,
'no_singleline_whitespace_before_semicolons' => true,
'no_spaces_after_function_name' => true,
'no_spaces_around_offset' => true,
'no_spaces_inside_parenthesis' => true,
'no_trailing_comma_in_list_call' => true,
'no_trailing_comma_in_singleline_array' => true,
'no_trailing_whitespace' => true,
'no_trailing_whitespace_in_comment' => true,
'no_unneeded_control_parentheses' => true,
'no_unused_imports' => true,
'no_useless_else' => true,
'no_useless_return' => true,
'no_whitespace_before_comma_in_array' => true,
'no_whitespace_in_blank_line' => true,
'normalize_index_brace' => true,
'not_operator_with_space' => false,
'not_operator_with_successor_space' => false,
'object_operator_without_whitespace' => true,
'ordered_class_elements' => false,
'ordered_imports' => true,
'php_unit_fqcn_annotation' => true,
'php_unit_strict' => false,
'phpdoc_add_missing_param_annotation' => true,
'phpdoc_align' => true,
'phpdoc_inline_tag' => true,
'phpdoc_no_access' => true,
'phpdoc_no_alias_tag' => ['property-read' => 'property', 'property-write' => 'property', 'type' => 'var'],
'phpdoc_no_empty_return' => true,
'phpdoc_no_package' => true,
'phpdoc_no_useless_inheritdoc' => true,
'phpdoc_order' => true,
'phpdoc_return_self_reference' => true,
'phpdoc_scalar' => true,
'phpdoc_separation' => false,
'phpdoc_single_line_var_spacing' => true,
'phpdoc_summary' => false,
'phpdoc_to_comment' => true,
'phpdoc_trim' => true,
'phpdoc_types' => true,
'phpdoc_var_without_name' => true,
'pow_to_exponentiation' => false,
'pre_increment' => true,
'protected_to_private' => true,
'return_type_declaration' => true,
'self_accessor' => true,
'semicolon_after_instruction' => true,
'short_scalar_cast' => true,
'single_blank_line_at_eof' => true,
'single_blank_line_before_namespace' => false,
'single_class_element_per_statement' => true,
'single_import_per_statement' => true,
'single_line_after_imports' => true,
'single_quote' => true,
'space_after_semicolon' => true,
'standardize_not_equals' => true,
'strict_param' => false,
'switch_case_semicolon_to_colon' => true,
'switch_case_space' => true,
'ternary_operator_spaces' => true,
'ternary_to_null_coalescing' => false,
'trailing_comma_in_multiline_array' => true,
'trim_array_spaces' => true,
'unary_operator_spaces' => true,
'visibility_required' => true,
'whitespace_after_comma_in_array' => true,
))
->setFinder($finder)
;
1 change: 0 additions & 1 deletion .travis.yml
Expand Up @@ -2,7 +2,6 @@ language: php
sudo: false

php:
- 5.6
- 7.0
- 7.1

Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Expand Up @@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## UNRELEASED

### Removed

* Removed support for PHP 5.x.

### Changed

* Replaced `http-interop/http-middleware` with `http-interop/http-server-middleware`.

## [0.3.0] - 2017-09-21

### Changed
Expand Down
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -11,7 +11,7 @@ Middleware to execute request handlers discovered by a router.

## Requirements

* PHP >= 5.6
* PHP >= 7.0
* A [PSR-7](https://packagist.org/providers/psr/http-message-implementation) http mesage implementation ([Diactoros](https://github.com/zendframework/zend-diactoros), [Guzzle](https://github.com/guzzle/psr7), [Slim](https://github.com/slimphp/Slim), etc...)
* A [PSR-15 middleware dispatcher](https://github.com/middlewares/awesome-psr15-middlewares#dispatcher)
* Optionally, a [PSR-11](https://github.com/php-fig/container) container to resolve the route handlers
Expand Down
10 changes: 5 additions & 5 deletions composer.json
Expand Up @@ -19,15 +19,15 @@
"issues": "https://github.com/middlewares/request-handler/issues"
},
"require": {
"php": "^5.6 || ^7.0",
"http-interop/http-middleware": "^0.5",
"middlewares/utils": "~0.12"
"php": "^7.0",
"middlewares/utils": "~0.13",
"http-interop/http-server-middleware": "^1.0"

This comment has been minimized.

Copy link
@oscarotero

oscarotero Nov 14, 2017

Author Member

@shadowhand I don't know why, but on install any middlewares/* package, it install http-interop/http-server-middleware v1.0.1 that it's ok, but http-interop/http-server-request v1.0.0 instead v1.0.1

This comment has been minimized.

Copy link
@shadowhand

shadowhand Nov 14, 2017

Member

Hmmm, that is odd. Not sure why that would be.

},
"require-dev": {
"phpunit/phpunit": "^5.5",
"phpunit/phpunit": "^6.0",
"zendframework/zend-diactoros": "^1.3",
"friendsofphp/php-cs-fixer": "^2.0",
"squizlabs/php_codesniffer": "^2.7",
"squizlabs/php_codesniffer": "^3.0",
"psr/container": "^1.0"
},
"suggest": {
Expand Down
1 change: 1 addition & 0 deletions phpcs.xml → phpcs.xml.dist
Expand Up @@ -4,6 +4,7 @@

<!-- display progress -->
<arg value="p"/>
<arg name="report" value="full"/>
<arg name="colors"/>

<!-- coding standard -->
Expand Down
17 changes: 0 additions & 17 deletions phpunit.xml

This file was deleted.

33 changes: 33 additions & 0 deletions phpunit.xml.dist
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
backupGlobals="false"
backupStaticAttributes="false"
beStrictAboutOutputDuringTests="true"
beStrictAboutTestsThatDoNotTestAnything="true"
beStrictAboutTodoAnnotatedTests="true"
colors="true"
verbose="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
failOnWarning="true">
<testsuites>
<testsuite name="ReferrerSpam test suite">
<directory>tests</directory>
</testsuite>
</testsuites>

<filter>
<whitelist addUncoveredFilesFromWhitelist="true" processUncoveredFilesFromWhitelist="true">
<directory>./src</directory>
<exclude>
<directory>./tests</directory>
<directory>./vendor</directory>
</exclude>
</whitelist>
</filter>
</phpunit>
31 changes: 6 additions & 25 deletions src/RequestHandler.php
@@ -1,10 +1,10 @@
<?php
declare(strict_types = 1);

namespace Middlewares;

use Middlewares\Utils\CallableHandler;
use Middlewares\Utils\CallableResolver\CallableResolverInterface;
use Middlewares\Utils\CallableResolver\ReflectionResolver;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Interop\Http\Server\MiddlewareInterface;
Expand All @@ -29,26 +29,16 @@ class RequestHandler implements MiddlewareInterface

/**
* Set the resolver instance.
*
* @param CallableResolverInterface $resolver
*/
public function __construct(CallableResolverInterface $resolver = null)
{
if (empty($resolver)) {
$resolver = new ReflectionResolver();
}

$this->resolver = $resolver;
}

/**
* Set the attribute name to store handler reference.
*
* @param string $handlerAttribute
*
* @return self
*/
public function handlerAttribute($handlerAttribute)
public function handlerAttribute(string $handlerAttribute): self
{
$this->handlerAttribute = $handlerAttribute;

Expand All @@ -57,10 +47,8 @@ public function handlerAttribute($handlerAttribute)

/**
* Extra arguments passed to the handler.
*
* @return self
*/
public function arguments(...$args)
public function arguments(...$args): self
{
$this->arguments = $args;

Expand All @@ -69,19 +57,12 @@ public function arguments(...$args)

/**
* Process a server request and return a response.
*
* @param ServerRequestInterface $request
* @param RequestHandlerInterface $handler
*
* @return ResponseInterface
*/
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler)
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$arguments = array_merge([$request], $this->arguments);

$handler = $request->getAttribute($this->handlerAttribute);
$callable = $this->resolver->resolve($handler, $arguments);
$callable = new CallableHandler($handler, $this->arguments, $this->resolver);

return CallableHandler::execute($callable, $arguments);
return $callable->handle($request);
}
}
3 changes: 2 additions & 1 deletion tests/RequestHandlerTest.php
Expand Up @@ -12,8 +12,9 @@
use Psr\Container\ContainerInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use PHPUnit\Framework\TestCase;

class RequestHandlerTest extends \PHPUnit_Framework_TestCase
class RequestHandlerTest extends TestCase
{
public function testHandleCallable()
{
Expand Down

1 comment on commit 5c9db37

@shadowhand
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Please sign in to comment.