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);
         }
     }
 }
Пример #3
0
 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;
 }