PluginProbe
Depicter — Popup & Slider Builder / 2.0.0
Depicter — Popup & Slider Builder v2.0.0
4.8.1 trunk 1.0.0 1.1.0 1.1.2 1.1.4 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.5 1.3.8 1.5.0 1.5.1 1.5.2 1.5.5 1.6.0 1.6.1 1.6.2 1.7.0 All 76 releases
depicter / modules / GuzzleHttp / Handler / EasyHandle.php

EasyHandle.php in Depicter — Popup & Slider Builder 2.0.0, at modules/GuzzleHttp/Handler/EasyHandle.php

113 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Depicter\GuzzleHttp\Handler;
4
5 use Depicter\GuzzleHttp\Psr7\Response;
6 use Depicter\GuzzleHttp\Utils;
7 use Depicter\Psr\Http\Message\RequestInterface;
8 use Depicter\Psr\Http\Message\ResponseInterface;
9 use Depicter\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 }
113