Seditio Source
Root |
./othercms/xenForo 2.2.8/src/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
<?php
namespace GuzzleHttp\Handler;

use
GuzzleHttp\Psr7\Response;
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 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'])
        ) {
           
$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(
           
$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);
    }
}