You are here

public function EasyHandle::createResponse in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php \GuzzleHttp\Handler\EasyHandle::createResponse()

Attach a response to the easy handle based on the received headers.

Throws

\RuntimeException if no headers have been received.

File

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

Class

EasyHandle
Represents a cURL easy handle and the data it populates.

Namespace

GuzzleHttp\Handler

Code

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