/** * Creates a new response. * * @param Image $image * @access public * @final * @return void */ public final function make(ImageInterface $image) { $this->response = new Response(null, 200); $this->response->setPublic(); $lastMod = (new \DateTime())->setTimestamp($modDate = $image->getLastModTime()); $mod = strtotime($this->request->headers->get('if-modified-since', time())); if (($image instanceof CachedImage || !$image->isProcessed()) && $mod === $modDate) { $this->setHeadersIfNotProcessed($this->response, $lastMod); } else { $this->setHeaders($this->response, $image, $lastMod); } }
/** * {@inheritdoc} */ protected function setHeaders(Response $response, ImageInterface $image, \DateTime $lastMod) { $response->headers->set('Content-type', $image->getMimeType()); $response->setLastModified($lastMod); $response->headers->set('Accept-ranges', 'bytes'); $response->headers->set('Keep-Alive', 'timeout=5, max=99'); $response->headers->set('Connection', 'keep-alive', true); // return normal by setting image contents; if ($image->isProcessed()) { $response->setContent($content = $image->getContents()); $response->setEtag(hash('md5', $content)); } else { // set the xsend header: $file = $image->getSource(); $response->setEtag(md5_file($file)); $response->headers->set('Content-Length', filesize($file)); $response->headers->set('Content-Disposition', sprintf('inline; filename="%s"', basename($file))); $response->headers->set('X-Sendfile', $file); } }