dokuwiki-matrixnotifierwas-plugin – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 <?php
2  
3 namespace GuzzleHttp\Handler;
4  
5 use GuzzleHttp\Psr7\Response;
6 use GuzzleHttp\Utils;
7 use Psr\Http\Message\RequestInterface;
8 use Psr\Http\Message\ResponseInterface;
9 use Psr\Http\Message\StreamInterface;
10  
11 /**
12 * Represents a cURL easy handle and the data it populates.
13 *
14 * @internal
15 */
16 final class EasyHandle
17 {
18 /**
19 * @var resource|\CurlHandle cURL resource
20 */
21 public $handle;
22  
23 /**
24 * @var StreamInterface Where data is being written
25 */
26 public $sink;
27  
28 /**
29 * @var array Received HTTP headers so far
30 */
31 public $headers = [];
32  
33 /**
34 * @var ResponseInterface|null Received response (if any)
35 */
36 public $response;
37  
38 /**
39 * @var RequestInterface Request being sent
40 */
41 public $request;
42  
43 /**
44 * @var array Request options
45 */
46 public $options = [];
47  
48 /**
49 * @var int cURL error number (if any)
50 */
51 public $errno = 0;
52  
53 /**
54 * @var \Throwable|null Exception during on_headers (if any)
55 */
56 public $onHeadersException;
57  
58 /**
59 * @var \Exception|null Exception during createResponse (if any)
60 */
61 public $createResponseException;
62  
63 /**
64 * Attach a response to the easy handle based on the received headers.
65 *
66 * @throws \RuntimeException if no headers have been received or the first
67 * header line is invalid.
68 */
69 public function createResponse(): void
70 {
71 [$ver, $status, $reason, $headers] = HeaderProcessor::parseHeaders($this->headers);
72  
73 $normalizedKeys = Utils::normalizeHeaderKeys($headers);
74  
75 if (!empty($this->options['decode_content']) && isset($normalizedKeys['content-encoding'])) {
76 $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']];
77 unset($headers[$normalizedKeys['content-encoding']]);
78 if (isset($normalizedKeys['content-length'])) {
79 $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']];
80  
81 $bodyLength = (int) $this->sink->getSize();
82 if ($bodyLength) {
83 $headers[$normalizedKeys['content-length']] = $bodyLength;
84 } else {
85 unset($headers[$normalizedKeys['content-length']]);
86 }
87 }
88 }
89  
90 // Attach a response to the easy handle with the parsed headers.
91 $this->response = new Response(
92 $status,
93 $headers,
94 $this->sink,
95 $ver,
96 $reason
97 );
98 }
99  
100 /**
101 * @param string $name
102 *
103 * @return void
104 *
105 * @throws \BadMethodCallException
106 */
107 public function __get($name)
108 {
109 $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: '.$name;
110 throw new \BadMethodCallException($msg);
111 }
112 }