/** * * @param Message\Response $response */ protected function emitHeaders(Message\Response $response) { if (!$response->getStatusCode()) { $response->setStatus(200, "OK"); } if ($response->getStatusCode() != 200) { $status = $response->getStatusCode(); $message = $response->getStatusString() ?: Message\HttpStatus::message($status); $proto = $response->getProto() ?: "HTTP"; $version = $response->getVersion() ?: "1.1"; $this->addHeader("{$proto}/{$version} {$status} {$message}"); } $sent = array(); $headers = $response->getHeaders(); foreach ($headers as $info) { $name = $info['header']; foreach ($info['content'] as $value) { if ($value !== null) { $this->addHeader("{$name}: {$value}", !isset($sent[$name])); $sent[$name] = true; } else { $this->removeHeader($name); } } } if (!$this->poweredByEnabled() && $headers->get('X-Powered-By') === null && !headers_sent()) { $this->removeHeader('X-Powered-By'); } }
/** * @param Message\Request $request * @param Message\Response $response * @return static */ public function register(Message\Request $request, Message\Response $response) { $type = $this->mime; $mtime = $this->statValue('mtime', time()); $etag = $this->calcEtag(); $fresh = $this->freshResponse($request, $mtime, $etag); $dispo = $this->disposition; $length = strlen($this->data); // Add common headers $response->getHeaders()->add('Etag', $etag)->add('Last-Modified', Message\Headers::date($mtime)); if ($fresh) { // 200 OK $response->getHeaders()->add('Accept-Ranges', 'none')->add('Content-Type', $type)->add('Content-Length', $fresh ? $length : 0)->add('Content-Disposition', $dispo); $response->setBody($this->sendHandler()); } else { // 304 Not Modified $response->setStatus(304)->setBody(null); } return $this; }
/** * @param Message\Request $request * @param Message\Response $response * @return static */ public function register(Message\Request $request, Message\Response $response) { $info = pathinfo($this->filename); $mtime = $this->statValue('mtime', time()); $etag = $this->fileEtag($this->filename); $fresh = $this->freshResponse($request, $mtime, $etag); $length = $this->statValue('size'); // Add common headers $response->getHeaders()->add('Etag', $etag)->add('Last-Modified', Message\Headers::date($mtime)); if ($fresh) { // 200 OK $headers = $response->getHeaders(); $headers->add('Accept-Ranges', 'none')->add('Content-Type', $this->contentType($info))->add('Content-Disposition', $this->getDispoString()); if ($fresh) { if ($length !== null) { $headers->add('Content-Length', $length); } } else { $headers->add('Content-Length', 0); } $response->setBody($this->sendHandler()); $this->autoclose = false; } else { // 304 Not Modified $response->setStatus(304)->setBody(null); } return $this; }