Esempio n. 1
0
 /**
  * @param callable[] $middleware
  * @param callable $last
  * @return callable
  */
 private function getNext(array $middleware, callable $last)
 {
     return function (ServerRequestInterface $request, ResponseInterface $response) use($middleware, $last) {
         if (!$request instanceof ActionRequest) {
             $request = new ActionRequest($request);
         }
         $this->request = $request;
         if (count($middleware)) {
             $next = array_shift($middleware);
             $response = $next($request, $response, $this->getNext($middleware, $last));
             if (!$response instanceof ResponseInterface) {
                 throw new InvalidResponseException('Invalid response returned from: ' . \Jivoo\Utilities::callableToString($next));
             }
             return $response;
         }
         $response = $last($request, $response);
         if (!$response instanceof ResponseInterface) {
             throw new InvalidResponseException('Invalid response returned from: ' . \Jivoo\Utilities::callableToString($last));
         }
         return $response;
     };
 }