/**
  * @param ServerRequestInterface $request
  * @param ResponseInterface      $response
  * @param callable               $next
  *
  * @return \Psr\Http\Message\ResponseInterface
  */
 public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
 {
     try {
         $request = $this->server->validateAuthenticatedRequest($request);
     } catch (OAuthServerException $exception) {
         return $exception->generateHttpResponse($response);
         // @codeCoverageIgnoreStart
     } catch (\Exception $exception) {
         return (new OAuthServerException($exception->getMessage(), 0, 'unknown_error', 500))->generateHttpResponse($response);
         // @codeCoverageIgnoreEnd
     }
     // Pass the request and response on to the next responder in the chain
     return $next($request, $response);
 }
 /**
  * @param mixed $element
  * @throws AbortException
  */
 public final function checkRequirements($element)
 {
     if (!$element instanceof ComponentReflection) {
         return;
     }
     $request = $this->createServerRequest();
     $response = $this->createResponse();
     try {
         $request = $this->resourceServer->validateAuthenticatedRequest($request);
     } catch (OAuthServerException $e) {
         $this->sendResponse($e->generateHttpResponse($response));
     } catch (\Exception $e) {
         if ($this->logger) {
             $this->logger->error($e->getMessage(), ['exception' => $e]);
         }
         $body = $this->createStream();
         $body->write('Unknown error');
         $this->sendResponse($response->withStatus(IResponse::S500_INTERNAL_SERVER_ERROR)->withBody($body));
     }
     $this->onAuthorized($request);
 }