/**
  * @param \WoohooLabs\Yin\JsonApi\Request\RequestInterface $request
  * @param \Psr\Http\Message\ResponseInterface $response
  * @param callable $next
  * @return void|\Psr\Http\Message\ResponseInterface
  * @throws \Exception
  */
 public function __invoke(RequestInterface $request, ResponseInterface $response, callable $next)
 {
     $callable = $request->getAttribute($this->handlerAttribute);
     if ($callable === null) {
         return $this->getDispatchErrorResponse($response);
     }
     $jsonApi = new JsonApi($request, $response, $this->exceptionFactory, $this->serializer);
     if (is_array($callable) && is_string($callable[0])) {
         $object = $this->container !== null ? $this->container->get($callable[0]) : new $callable[0]();
         $response = $object->{$callable[1]}($jsonApi);
     } else {
         if (!is_callable($callable)) {
             $callable = $this->container->get($callable);
         }
         $response = call_user_func($callable, $jsonApi);
     }
     return $next($request, $response);
 }