/** * Build Response From Cache * * @param Response $response Response * @param array $cache Cache * * @return Response Response */ private function buildResponseFromCache(Response $response, array $cache) { $body = $response->getBody(); $response = unserialize($cache['response']); $response = $response->withBody($body); $response->getBody()->write(unserialize($cache['body'])); $response->getBody()->rewind(); return $response; }
/** * Apply Fractal * * @param Request $request Request * @param Response $response Response * * @return Response Response */ private function applyFractal(Request $request, Response $response) { $fractal = new Manager(); // if (isset($this->includes)) { // $this->manager->parseIncludes($this->includes); // } $transformer = $this->transformer; $paginator = $this->paginator; $serializer = $this->serializer; if ($response->getItem()) { if ($transformer) { $resource = new Item($response->getItem(), $transformer); } else { $resource = new Item($response->getItem()); } } if (is_array($response->getCollection())) { if ($transformer) { $resource = new Collection($response->getCollection(), $transformer); } else { $resource = new Collection($response->getCollection()); } if ($paginator && ($criteria = $response->getCriteria())) { $paginator = $this->setCriteriaOnPaginator($paginator, $criteria); $resource->setPaginator($paginator); } } if (isset($resource)) { $fractal->setSerializer($serializer); $resource = $fractal->createData($resource)->toArray(); $json = JsonHelper::encode($resource); $response = $response->withJson($json); } return $response; }