示例#1
0
 /**
  * Constructor.
  *
  * @param string $baseUrl
  * @param string $basePath
  * @param array  $request
  * @param array  $server
  */
 public function __construct($baseUrl, $basePath, array $request = array(), array $server = array())
 {
     $this->baseUrl = $baseUrl;
     $this->basePath = $basePath;
     $this->attributes = new ParameterBag();
     $this->request = new ParameterBag($request ?: $_REQUEST);
     $this->server = new ServerBag($server ?: $_SERVER);
     $this->headers = new HeaderBag($this->server->getHeaders());
     // decode json content type
     if (stripos($this->headers->get('CONTENT_TYPE'), 'application/json') !== false) {
         if ($json = json_decode(@file_get_contents('php://input'), true)) {
             $this->request->add($json);
         }
     }
 }
示例#2
0
 /**
  * Gets the HTTP method.
  *
  * @return string
  */
 public function getMethod()
 {
     $method = $this->server->get('REQUEST_METHOD', 'GET');
     $method = $this->headers->get('X-HTTP-Method-Override', $method);
     return strtoupper($method);
 }
 public function testCacheControlDirectiveParsing()
 {
     $bag = new HeaderBag(array('cache-control' => 'public, max-age=10'));
     $this->assertTrue($bag->hasCacheControlDirective('public'));
     $this->assertTrue($bag->getCacheControlDirective('public'));
     $this->assertTrue($bag->hasCacheControlDirective('max-age'));
     $this->assertEquals(10, $bag->getCacheControlDirective('max-age'));
     $bag->addCacheControlDirective('s-maxage', 100);
     $this->assertEquals('max-age=10, public, s-maxage=100', $bag->get('cache-control'));
 }
示例#4
0
文件: Dumper.php 项目: ThrusterIO/dns
 private function headerToBinary(HeaderBag $header) : string
 {
     $data = '';
     $data .= pack('n', $header->get('id'));
     $flags = 0x0;
     $flags = $flags << 1 | $header->get('qr');
     $flags = $flags << 4 | $header->get('opcode');
     $flags = $flags << 1 | $header->get('aa');
     $flags = $flags << 1 | $header->get('tc');
     $flags = $flags << 1 | $header->get('rd');
     $flags = $flags << 1 | $header->get('ra');
     $flags = $flags << 3 | $header->get('z');
     $flags = $flags << 4 | $header->get('rcode');
     $data .= pack('n', $flags);
     $data .= pack('n', $header->get('qdCount'));
     $data .= pack('n', $header->get('anCount'));
     $data .= pack('n', $header->get('nsCount'));
     $data .= pack('n', $header->get('arCount'));
     return $data;
 }
示例#5
0
文件: Request.php 项目: vectrex/vxphp
 protected function prepareRequestUri()
 {
     $requestUri = '';
     if ($this->headers->has('X_ORIGINAL_URL')) {
         // IIS with Microsoft Rewrite Module
         $requestUri = $this->headers->get('X_ORIGINAL_URL');
         $this->headers->remove('X_ORIGINAL_URL');
         $this->server->remove('HTTP_X_ORIGINAL_URL');
         $this->server->remove('UNENCODED_URL');
         $this->server->remove('IIS_WasUrlRewritten');
     } elseif ($this->headers->has('X_REWRITE_URL')) {
         // IIS with ISAPI_Rewrite
         $requestUri = $this->headers->get('X_REWRITE_URL');
         $this->headers->remove('X_REWRITE_URL');
     } elseif ($this->server->get('IIS_WasUrlRewritten') == '1' && $this->server->get('UNENCODED_URL') != '') {
         // IIS7 with URL Rewrite: make sure we get the unencoded URL (double slash problem)
         $requestUri = $this->server->get('UNENCODED_URL');
         $this->server->remove('UNENCODED_URL');
         $this->server->remove('IIS_WasUrlRewritten');
     } elseif ($this->server->has('REQUEST_URI')) {
         $requestUri = $this->server->get('REQUEST_URI');
         // HTTP proxy reqs setup request URI with scheme and host [and port] + the URL path, only use URL path
         $schemeAndHttpHost = $this->getSchemeAndHttpHost();
         if (strpos($requestUri, $schemeAndHttpHost) === 0) {
             $requestUri = substr($requestUri, strlen($schemeAndHttpHost));
         }
     } elseif ($this->server->has('ORIG_PATH_INFO')) {
         // IIS 5.0, PHP as CGI
         $requestUri = $this->server->get('ORIG_PATH_INFO');
         if ('' != $this->server->get('QUERY_STRING')) {
             $requestUri .= '?' . $this->server->get('QUERY_STRING');
         }
         $this->server->remove('ORIG_PATH_INFO');
     }
     // normalize the request URI to ease creating sub-requests from this request
     $this->server->set('REQUEST_URI', $requestUri);
     return $requestUri;
 }