diff --git a/composer.json b/composer.json index 3606221..1f88730 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,8 @@ "psr/log": "^1.0", "psr/http-message": "^1.0", "zendframework/zend-diactoros": "^1.4", - "http-interop/http-middleware": "^0.4.1" + "http-interop/http-middleware": "^0.4.1", + "php-middleware/double-pass-compatibility": "^1.0" }, "require-dev": { "phpunit/phpunit": "^6.1" diff --git a/src/LogMiddleware.php b/src/LogMiddleware.php index 08cdc00..a95f3e5 100644 --- a/src/LogMiddleware.php +++ b/src/LogMiddleware.php @@ -6,6 +6,7 @@ use Interop\Http\ServerMiddleware\DelegateInterface; use Interop\Http\ServerMiddleware\MiddlewareInterface; +use PhpMiddleware\DoublePassCompatibilityTrait; use PhpMiddleware\LogHttpMessages\Formatter\ResponseFormatter; use PhpMiddleware\LogHttpMessages\Formatter\ServerRequestFormatter; use Psr\Http\Message\ResponseInterface as Response; @@ -15,6 +16,8 @@ final class LogMiddleware implements MiddlewareInterface { + use DoublePassCompatibilityTrait; + const LOG_MESSAGE = 'Request/Response'; private $logger; @@ -37,26 +40,10 @@ public function __construct( $this->logMessage = $logMessage; } - public function __invoke(ServerRequest $request, Response $response, callable $next) : Response - { - $outResponse = $next($request, $response); - - $this->logMessages($request, $outResponse); - - return $outResponse; - } - public function process(ServerRequest $request, DelegateInterface $delegate) : Response { $response = $delegate->process($request); - $this->logMessages($request, $response); - - return $response; - } - - private function logMessages(ServerRequest $request, Response $response) - { $formattedRequest = $this->requestFormatter->formatServerRequest($request); $formattedResponse = $this->responseFormatter->formatResponse($response); @@ -64,5 +51,7 @@ private function logMessages(ServerRequest $request, Response $response) 'request' => $formattedRequest->getValue(), 'response' => $formattedResponse->getValue(), ]); + + return $response; } }