PluginProbe
BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript / 4.1.20
BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript v4.1.20
4.1.20 4.1.19 4.1.18 4.1.17 4.1.16 4.1.15 4.1.14 4.1.13 4.1.12 4.1.11 4.1.10 4.0.30 4.0.29 4.0.28 4.0.27 4.0.26 4.0.24 4.0.25 4.0.23 4.0.22 4.0.21 4.0.19 4.0.18 4.0.17 4.0.16 All 174 releases
searchpro / BerqWP / vendor / guzzlehttp / guzzle / src / Handler / EasyHandle.php

EasyHandle.php in BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript 4.1.20, at BerqWP/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php

113 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 }
113