You are here

final class EasyHandle in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php \GuzzleHttp\Handler\EasyHandle

Represents a cURL easy handle and the data it populates.

@internal

Hierarchy

Expanded class hierarchy of EasyHandle

File

vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php, line 14

Namespace

GuzzleHttp\Handler
View source
final class EasyHandle {

  /** @var resource cURL resource */
  public $handle;

  /** @var StreamInterface Where data is being written */
  public $sink;

  /** @var array Received HTTP headers so far */
  public $headers = [];

  /** @var ResponseInterface Received response (if any) */
  public $response;

  /** @var RequestInterface Request being sent */
  public $request;

  /** @var array Request options */
  public $options = [];

  /** @var int cURL error number (if any) */
  public $errno = 0;

  /** @var \Exception Exception during on_headers (if any) */
  public $onHeadersException;

  /**
   * Attach a response to the easy handle based on the received headers.
   *
   * @throws \RuntimeException if no headers have been received.
   */
  public function createResponse() {
    if (empty($this->headers)) {
      throw new \RuntimeException('No headers have been received');
    }

    // HTTP-version SP status-code SP reason-phrase
    $startLine = explode(' ', array_shift($this->headers), 3);
    $headers = \GuzzleHttp\headers_from_lines($this->headers);
    $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
    if (!empty($this->options['decode_content']) && isset($normalizedKeys['content-encoding'])) {
      unset($headers[$normalizedKeys['content-encoding']]);
      if (isset($normalizedKeys['content-length'])) {
        $bodyLength = (int) $this->sink
          ->getSize();
        if ($bodyLength) {
          $headers[$normalizedKeys['content-length']] = $bodyLength;
        }
        else {
          unset($headers[$normalizedKeys['content-length']]);
        }
      }
    }

    // Attach a response to the easy handle with the parsed headers.
    $this->response = new Response($startLine[1], $headers, $this->sink, substr($startLine[0], 5), isset($startLine[2]) ? (string) $startLine[2] : null);
  }
  public function __get($name) {
    $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: ' . $name;
    throw new \BadMethodCallException($msg);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
EasyHandle::$errno public property @var int cURL error number (if any)
EasyHandle::$handle public property @var resource cURL resource
EasyHandle::$headers public property @var array Received HTTP headers so far
EasyHandle::$onHeadersException public property @var \Exception Exception during on_headers (if any)
EasyHandle::$options public property @var array Request options
EasyHandle::$request public property @var RequestInterface Request being sent
EasyHandle::$response public property @var ResponseInterface Received response (if any)
EasyHandle::$sink public property @var StreamInterface Where data is being written
EasyHandle::createResponse public function Attach a response to the easy handle based on the received headers.
EasyHandle::__get public function