| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | 
							- <?php
 
- namespace GuzzleHttp\Handler;
 
- use GuzzleHttp\Psr7\Response;
 
- use GuzzleHttp\Utils;
 
- use Psr\Http\Message\RequestInterface;
 
- use Psr\Http\Message\ResponseInterface;
 
- use Psr\Http\Message\StreamInterface;
 
- /**
 
-  * Represents a cURL easy handle and the data it populates.
 
-  *
 
-  * @internal
 
-  */
 
- final class EasyHandle
 
- {
 
-     /**
 
-      * @var resource|\CurlHandle cURL resource
 
-      */
 
-     public $handle;
 
-     /**
 
-      * @var StreamInterface Where data is being written
 
-      */
 
-     public $sink;
 
-     /**
 
-      * @var array Received HTTP headers so far
 
-      */
 
-     public $headers = [];
 
-     /**
 
-      * @var ResponseInterface|null 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 \Throwable|null Exception during on_headers (if any)
 
-      */
 
-     public $onHeadersException;
 
-     /**
 
-      * @var \Exception|null Exception during createResponse (if any)
 
-      */
 
-     public $createResponseException;
 
-     /**
 
-      * Attach a response to the easy handle based on the received headers.
 
-      *
 
-      * @throws \RuntimeException if no headers have been received or the first
 
-      *                           header line is invalid.
 
-      */
 
-     public function createResponse(): void
 
-     {
 
-         [$ver, $status, $reason, $headers] = HeaderProcessor::parseHeaders($this->headers);
 
-         $normalizedKeys = Utils::normalizeHeaderKeys($headers);
 
-         if (!empty($this->options['decode_content']) && isset($normalizedKeys['content-encoding'])) {
 
-             $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']];
 
-             unset($headers[$normalizedKeys['content-encoding']]);
 
-             if (isset($normalizedKeys['content-length'])) {
 
-                 $headers['x-encoded-content-length'] = $headers[$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(
 
-             $status,
 
-             $headers,
 
-             $this->sink,
 
-             $ver,
 
-             $reason
 
-         );
 
-     }
 
-     /**
 
-      * @param string $name
 
-      *
 
-      * @return void
 
-      *
 
-      * @throws \BadMethodCallException
 
-      */
 
-     public function __get($name)
 
-     {
 
-         $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: '.$name;
 
-         throw new \BadMethodCallException($msg);
 
-     }
 
- }
 
 
  |