/var/www/hkosl.com/b2b2c/webadmin/libraies/guzzlehttp/guzzle/src/Handler/EasyHandle.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?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);
    }
}