Esempio n. 1
0
 public function composeHeaders(RestException $e = null)
 {
     //only GET method should be cached if allowed by API developer
     $expires = $this->requestMethod == 'GET' ? Defaults::$headerExpires : 0;
     if (!is_array(Defaults::$headerCacheControl)) {
         Defaults::$headerCacheControl = array(Defaults::$headerCacheControl);
     }
     $cacheControl = Defaults::$headerCacheControl[0];
     if ($expires > 0) {
         $cacheControl = $this->apiMethodInfo->accessLevel ? 'private, ' : 'public, ';
         $cacheControl .= end(Defaults::$headerCacheControl);
         $cacheControl = str_replace('{expires}', $expires, $cacheControl);
         $expires = gmdate('D, d M Y H:i:s \\G\\M\\T', time() + $expires);
     }
     @header('Cache-Control: ' . $cacheControl);
     @header('Expires: ' . $expires);
     @header('X-Powered-By: Luracast Restler v' . Restler::VERSION);
     if (Defaults::$crossOriginResourceSharing && isset($_SERVER['HTTP_ORIGIN'])) {
         header('Access-Control-Allow-Origin: ' . (Defaults::$accessControlAllowOrigin == '*' ? $_SERVER['HTTP_ORIGIN'] : Defaults::$accessControlAllowOrigin));
         header('Access-Control-Allow-Credentials: true');
         header('Access-Control-Max-Age: 86400');
     }
     $this->responseFormat->setCharset(Defaults::$charset);
     $charset = $this->responseFormat->getCharset() ?: Defaults::$charset;
     @header('Content-Type: ' . (Defaults::$useVendorMIMEVersioning ? 'application/vnd.' . Defaults::$apiVendor . "-v{$this->requestedApiVersion}" . '+' . $this->responseFormat->getExtension() : $this->responseFormat->getMIME()) . '; charset=' . $charset);
     @header('Content-Language: ' . Defaults::$language);
     if (isset($this->apiMethodInfo->metadata['header'])) {
         foreach ($this->apiMethodInfo->metadata['header'] as $header) {
             @header($header, true);
         }
     }
     $code = 200;
     if (!Defaults::$suppressResponseCode) {
         if ($e) {
             $code = $e->getCode();
         } elseif (isset($this->apiMethodInfo->metadata['status'])) {
             $code = $this->apiMethodInfo->metadata['status'];
         }
     }
     $this->responseCode = $code;
     @header("{$_SERVER['SERVER_PROTOCOL']} {$code} " . (isset(RestException::$codes[$code]) ? RestException::$codes[$code] : ''));
 }
Esempio n. 2
0
 public function composeHeaders(RestException $e = null)
 {
     //only GET method should be cached if allowed by API developer
     $expires = $this->requestMethod == 'GET' ? Defaults::$headerExpires : 0;
     if (!is_array(Defaults::$headerCacheControl)) {
         Defaults::$headerCacheControl = array(Defaults::$headerCacheControl);
     }
     $cacheControl = Defaults::$headerCacheControl[0];
     if ($expires > 0) {
         $cacheControl = $this->apiMethodInfo->accessLevel ? 'private, ' : 'public, ';
         $cacheControl .= end(Defaults::$headerCacheControl);
         $cacheControl = str_replace('{expires}', $expires, $cacheControl);
         $expires = gmdate('D, d M Y H:i:s \\G\\M\\T', time() + $expires);
     }
     $this->headerData->set(new HeaderKey('Cache-Control', $cacheControl));
     $this->headerData->set(new HeaderKey('Expires', $expires));
     $this->headerData->set(new HeaderKey('X-Powered-By', 'Luracast Restler v' . Restler::VERSION));
     $server_origin = null;
     if (is_null($this->requestFromObject)) {
         if (\array_key_exists('HTTP_ORIGIN', $_SERVER)) {
             $server_origin = $_SERVER['HTTP_ORIGIN'];
         }
     } else {
         $server_origin = $this->requestFromObject->getHeader()->get('Origin');
         if (!is_null($server_origin)) {
             $server_origin = $server_origin->getValue();
         }
     }
     if (Defaults::$crossOriginResourceSharing && !is_null($server_origin)) {
         $this->headerData->set(new HeaderKey('Access-Control-Allow-Origin', Defaults::$accessControlAllowOrigin == '*' ? $server_origin : Defaults::$accessControlAllowOrigin));
         $this->headerData->set(new HeaderKey('Access-Control-Allow-Credentials', 'true'));
         $this->headerData->set(new HeaderKey('Access-Control-Max-Age', '86400'));
     }
     $this->responseFormat->setCharset(Defaults::$charset);
     $charset = $this->responseFormat->getCharset() ?: Defaults::$charset;
     $this->headerData->set(new HeaderKey('Content-Type', (Defaults::$useVendorMIMEVersioning ? 'application/vnd.' . Defaults::$apiVendor . "-v{$this->requestedApiVersion}" . '+' . $this->responseFormat->getExtension() : $this->responseFormat->getMIME()) . '; charset=' . $charset));
     $this->headerData->set(new HeaderKey('Content-Language', Defaults::$language));
     if (isset($this->apiMethodInfo->metadata['header'])) {
         foreach ($this->apiMethodInfo->metadata['header'] as $header) {
             if (strpos(':', $header) !== false) {
                 $header = \explode(':', $header);
                 $this->headerData->set(new HeaderKey($header[0], $header[1]), true);
                 continue;
             }
             $this->headerData->set(new HeaderKey(null, $header), true);
         }
     }
     $code = 200;
     if (!Defaults::$suppressResponseCode) {
         if ($e) {
             $code = $e->getCode();
         } elseif (isset($this->apiMethodInfo->metadata['status'])) {
             $code = $this->apiMethodInfo->metadata['status'];
         }
     }
     $this->responseCode = $code;
     if (is_null($this->requestFromObject)) {
         $this->headerData->setVersion($_SERVER['SERVER_PROTOCOL']);
     } else {
         $this->headerData->setVersion($this->requestFromObject->getVersion());
     }
     $this->headerData->setStatusCode($code);
 }