You are here

class Request in Lockr 7.3

PSR-7 request implementation.

Hierarchy

Expanded class hierarchy of Request

File

vendor/guzzlehttp/psr7/src/Request.php, line 12

Namespace

GuzzleHttp\Psr7
View source
class Request implements RequestInterface {
  use MessageTrait;

  /** @var string */
  private $method;

  /** @var null|string */
  private $requestTarget;

  /** @var UriInterface */
  private $uri;

  /**
   * @param string                               $method  HTTP method
   * @param string|UriInterface                  $uri     URI
   * @param array                                $headers Request headers
   * @param string|null|resource|StreamInterface $body    Request body
   * @param string                               $version Protocol version
   */
  public function __construct($method, $uri, array $headers = [], $body = null, $version = '1.1') {
    if (!$uri instanceof UriInterface) {
      $uri = new Uri($uri);
    }
    $this->method = strtoupper($method);
    $this->uri = $uri;
    $this
      ->setHeaders($headers);
    $this->protocol = $version;
    if (!isset($this->headerNames['host'])) {
      $this
        ->updateHostFromUri();
    }
    if ($body !== '' && $body !== null) {
      $this->stream = stream_for($body);
    }
  }
  public function getRequestTarget() {
    if ($this->requestTarget !== null) {
      return $this->requestTarget;
    }
    $target = $this->uri
      ->getPath();
    if ($target == '') {
      $target = '/';
    }
    if ($this->uri
      ->getQuery() != '') {
      $target .= '?' . $this->uri
        ->getQuery();
    }
    return $target;
  }
  public function withRequestTarget($requestTarget) {
    if (preg_match('#\\s#', $requestTarget)) {
      throw new InvalidArgumentException('Invalid request target provided; cannot contain whitespace');
    }
    $new = clone $this;
    $new->requestTarget = $requestTarget;
    return $new;
  }
  public function getMethod() {
    return $this->method;
  }
  public function withMethod($method) {
    $new = clone $this;
    $new->method = strtoupper($method);
    return $new;
  }
  public function getUri() {
    return $this->uri;
  }
  public function withUri(UriInterface $uri, $preserveHost = false) {
    if ($uri === $this->uri) {
      return $this;
    }
    $new = clone $this;
    $new->uri = $uri;
    if (!$preserveHost || !isset($this->headerNames['host'])) {
      $new
        ->updateHostFromUri();
    }
    return $new;
  }
  private function updateHostFromUri() {
    $host = $this->uri
      ->getHost();
    if ($host == '') {
      return;
    }
    if (($port = $this->uri
      ->getPort()) !== null) {
      $host .= ':' . $port;
    }
    if (isset($this->headerNames['host'])) {
      $header = $this->headerNames['host'];
    }
    else {
      $header = 'Host';
      $this->headerNames['host'] = 'Host';
    }

    // Ensure Host is the first header.
    // See: http://tools.ietf.org/html/rfc7230#section-5.4
    $this->headers = [
      $header => [
        $host,
      ],
    ] + $this->headers;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
MessageTrait::$headerNames private property @var array Map of lowercase header name => original name at registration
MessageTrait::$headers private property @var array Map of all registered headers, as original name => array of values
MessageTrait::$protocol private property @var string
MessageTrait::$stream private property @var StreamInterface
MessageTrait::getBody public function
MessageTrait::getHeader public function
MessageTrait::getHeaderLine public function
MessageTrait::getHeaders public function
MessageTrait::getProtocolVersion public function
MessageTrait::hasHeader public function
MessageTrait::setHeaders private function
MessageTrait::trimHeaderValues private function Trims whitespace from the header values.
MessageTrait::withAddedHeader public function
MessageTrait::withBody public function
MessageTrait::withHeader public function
MessageTrait::withoutHeader public function
MessageTrait::withProtocolVersion public function
Request::$method private property @var string
Request::$requestTarget private property @var null|string
Request::$uri private property @var UriInterface
Request::getMethod public function Retrieves the HTTP method of the request. Overrides RequestInterface::getMethod
Request::getRequestTarget public function Retrieves the message's request target. Overrides RequestInterface::getRequestTarget
Request::getUri public function Retrieves the URI instance. Overrides RequestInterface::getUri
Request::updateHostFromUri private function
Request::withMethod public function Return an instance with the provided HTTP method. Overrides RequestInterface::withMethod
Request::withRequestTarget public function Return an instance with the specific request-target. Overrides RequestInterface::withRequestTarget
Request::withUri public function Returns an instance with the provided URI. Overrides RequestInterface::withUri
Request::__construct public function 1