예제 #1
0
 /**
  * Validates the HTTP request method.
  *
  * @param string $method HTTP request method
  *
  * @throws \InvalidArgumentException For invalid method
  */
 public static final function validateMethod($method)
 {
     if (!Message::isValidToken($value)) {
         throw new InvalidArgumentException(sprintf('Invalid method "%s" provided; must be a HTTP token.', $value));
     }
 }
예제 #2
0
 /**
  * @param \Psr\Http\Message\StreamInterface|string $body
  * @param int                                      $statusCode
  * @param \Elegant\Http\Message\HeaderBag|array    $headers
  */
 public function __construct($body = '', $statusCode = 200, $headers = [])
 {
     parent::__construct($body, $headers);
     $this->setStatusCode($statusCode);
 }
예제 #3
0
 /**
  * Determines headers from global variables.
  *
  * @throws \BadRequestException For invalid header name or value
  *
  * @return array
  */
 protected static final function determineHeadersFromGlobals()
 {
     $headers = [];
     $specialHeaders = ['CONTENT_MD5' => 'Content-MD5'];
     $standardlizeHeaderName = function ($name) {
         return ucwords(strtolower(strtr($name, '_', '-')), '-');
     };
     foreach ($_SERVER as $name => $value) {
         if (isset($specialHeaders[$name])) {
             $name = $specialHeaders[$name];
         } elseif (Str::startsWith($name, 'HTTP_')) {
             $name = $standardlizeHeaderName(substr($name, 5));
         } elseif (Str::startsWith($name, 'REDIRECT_')) {
             $name = $standardlizeHeaderName(substr($name, 9));
         } elseif (Str::startsWith($name, 'CONTENT_')) {
             $name = $standardlizeHeaderName($name);
         } else {
             continue;
         }
         if (!Message::isValidToken($name)) {
             throw new BadRequestException(sprintf('Invalid header name "%s" detected; must be valid HTTP token.', $name));
         }
         if (!Message::isValidHeaderValue($value)) {
             throw new BadRequestException(sprintf('Invalid header value "%s" detected; must be valid HTTP header value.', $value));
         }
         $headers[$name] = $value;
     }
     return $headers;
 }