/** * 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)); } }
/** * 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; }