Beispiel #1
0
 private function buildResponse($status, $context, $result)
 {
     $mediaType = $context->getMediaType();
     $lastModified = $context->value('last-modified');
     $response = Response::create('', $status);
     if (!$context->getRequest()->isMethod('HEAD')) {
         $response->setContent(is_string($result) ? $result : $this->serialize($result, $mediaType));
     }
     Utils::setHeadersMaybe($response, ['Location' => $context->getLocation(), 'Vary' => $this->buildVaryHeader($context), 'Content-Type' => $mediaType, 'Last-Modified' => $lastModified ? Utils::httpDate($lastModified) : null, 'ETag' => $context->value('etag')]);
     return $response;
 }
 function testIfModifiedSinceConditionalRequest()
 {
     $lastModified = new \DateTime();
     $resource = Resource::create()->lastModified($lastModified);
     $response = $this->GET($resource, ['If-Modified-Since' => Utils::httpDate($lastModified)]);
     $this->assertStatusCode(Response::HTTP_NOT_MODIFIED, $response);
     $this->assertEquals(Utils::httpDate($lastModified), $response->headers->get('Last-Modified'));
     $ifModSince = clone $lastModified;
     $ifModSince->modify('-1 hour');
     $response = $this->GET($resource, ['If-Modified-Since' => Utils::httpDate($ifModSince)]);
     $this->assertStatusCode(Response::HTTP_OK, $response);
     $this->assertEquals(Utils::httpDate($lastModified), $response->headers->get('Last-Modified'));
 }