Psr7Middlewares\Middleware\AuraRouter::__invoke PHP Method

__invoke() public method

Execute the middleware.
public __invoke ( Psr\Http\Message\ServerRequestInterface $request, Psr\Http\Message\ResponseInterface $response, callable $next ) : Psr\Http\Message\ResponseInterface
$request Psr\Http\Message\ServerRequestInterface
$response Psr\Http\Message\ResponseInterface
$next callable
return Psr\Http\Message\ResponseInterface
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
    {
        $matcher = $this->router->getMatcher();
        $route = $matcher->match($request);
        if (!$route) {
            $failedRoute = $matcher->getFailedRoute();
            switch ($failedRoute->failedRule) {
                case 'Aura\\Router\\Rule\\Allows':
                    return $response->withStatus(405);
                    // 405 METHOD NOT ALLOWED
                // 405 METHOD NOT ALLOWED
                case 'Aura\\Router\\Rule\\Accepts':
                    return $response->withStatus(406);
                    // 406 NOT ACCEPTABLE
                // 406 NOT ACCEPTABLE
                default:
                    return $response->withStatus(404);
                    // 404 NOT FOUND
            }
        }
        $request = self::setAttribute($request, self::KEY, $route);
        foreach ($route->attributes as $name => $value) {
            $request = $request->withAttribute($name, $value);
        }
        $response = $this->executeCallable($route->handler, $request, $response);
        return $next($request, $response);
    }