protected function ok(array $res = null, $use_etag = true) { $response = new SS_HTTPResponse(); $response->setStatusCode(200); $response->addHeader('Content-Type', 'application/json'); if (is_null($res)) { $res = array(); } $response->setBody(json_encode($res)); //conditional get Request (etags) $request = Controller::curr()->getRequest(); if ($request->isGET() && $use_etag) { $etag = md5($response->getBody()); $requestETag = $request->getHeader('If-None-Match'); foreach (array('Expires', 'Cache-Control') as $header) { $response->removeHeader($header); } $lastmod = gmdate('D, d M Y 0:0:0 \\G\\M\\T', time()); $response->addHeader('Cache-Control', 'max-age=3600'); $response->addHeader('Last-Modified', $lastmod); $response->addHeader('Expires', gmdate('D, d M Y H:m:i \\G\\M\\T', time() + 3600)); $response->addHeader('ETag', $etag); if (!empty($requestETag) && $requestETag == $etag) { $response->setStatusCode(304); $response->addHeader('ETag', $etag); $response->setBody(null); } } return $response; }
/** * @param Object $originator * @param SS_HTTPRequest $request * @param SS_HTTPResponse $response * @param DataModel $model */ public function applyToResponse($originator, SS_HTTPRequest $request, SS_HTTPResponse $response, DataModel $model) { foreach ($this->headers as $key => $value) { if ($value !== "") { $response->addHeader($key, $value); } else { $response->removeHeader($key); } } }
protected function ok(array $res = null) { $response = new SS_HTTPResponse(); $response->setStatusCode(200); $response->addHeader('Content-Type', 'application/json'); if (is_null($res)) { $res = array(); } $response->setBody(json_encode($res)); //conditional get Request (etags) $request = Controller::curr()->getRequest(); if ($request->isGET()) { $etag = md5($response->getBody()); $requestETag = $request->getHeader('If-None-Match'); if (!empty($requestETag) && $requestETag == $etag) { $response->setStatusCode(304); foreach (array('Allow', 'Content-Encoding', 'Content-Language', 'Content-Length', 'Content-MD5', 'Content-Type', 'Last-Modified') as $header) { $response->removeHeader($header); } $response->setBody(null); } else { $response->addHeader('ETag', $etag); } } return $response; }