PluginProbe
StockPack – Stock photos and AI images from Unsplash, Adobe Stock, Freepik and more / 2.4.2
StockPack – Stock photos and AI images from Unsplash, Adobe Stock, Freepik and more v2.4.2
3.7.2 3.7.1 3.7.0 3.6.0 3.6.1 3.5.2 trunk 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.6.0 2.6.1 All 73 releases
stockpack / vendor / guzzlehttp / guzzle / src / Handler / EasyHandle.php

EasyHandle.php in StockPack – Stock photos and AI images from Unsplash, Adobe Stock, Freepik and more 2.4.2, at vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php

93 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace GuzzleHttp\Handler;
3
4 use GuzzleHttp\Psr7\Response;
5 use Psr\Http\Message\RequestInterface;
6 use Psr\Http\Message\ResponseInterface;
7 use Psr\Http\Message\StreamInterface;
8
9 /**
10 * Represents a cURL easy handle and the data it populates.
11 *
12 * @internal
13 */
14 final class EasyHandle
15 {
16 /** @var resource cURL resource */
17 public $handle;
18
19 /** @var StreamInterface Where data is being written */
20 public $sink;
21
22 /** @var array Received HTTP headers so far */
23 public $headers = [];
24
25 /** @var ResponseInterface Received response (if any) */
26 public $response;
27
28 /** @var RequestInterface Request being sent */
29 public $request;
30
31 /** @var array Request options */
32 public $options = [];
33
34 /** @var int cURL error number (if any) */
35 public $errno = 0;
36
37 /** @var \Exception Exception during on_headers (if any) */
38 public $onHeadersException;
39
40 /**
41 * Attach a response to the easy handle based on the received headers.
42 *
43 * @throws \RuntimeException if no headers have been received.
44 */
45 public function createResponse()
46 {
47 if (empty($this->headers)) {
48 throw new \RuntimeException('No headers have been received');
49 }
50
51 // HTTP-version SP status-code SP reason-phrase
52 $startLine = explode(' ', array_shift($this->headers), 3);
53 $headers = \GuzzleHttp\headers_from_lines($this->headers);
54 $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
55
56 if (!empty($this->options['decode_content'])
57 && isset($normalizedKeys['content-encoding'])
58 ) {
59 $headers['x-encoded-content-encoding']
60 = $headers[$normalizedKeys['content-encoding']];
61 unset($headers[$normalizedKeys['content-encoding']]);
62 if (isset($normalizedKeys['content-length'])) {
63 $headers['x-encoded-content-length']
64 = $headers[$normalizedKeys['content-length']];
65
66 $bodyLength = (int) $this->sink->getSize();
67 if ($bodyLength) {
68 $headers[$normalizedKeys['content-length']] = $bodyLength;
69 } else {
70 unset($headers[$normalizedKeys['content-length']]);
71 }
72 }
73 }
74
75 // Attach a response to the easy handle with the parsed headers.
76 $this->response = new Response(
77 $startLine[1],
78 $headers,
79 $this->sink,
80 substr($startLine[0], 5),
81 isset($startLine[2]) ? (string) $startLine[2] : null
82 );
83 }
84
85 public function __get($name)
86 {
87 $msg = $name === 'handle'
88 ? 'The EasyHandle has been released'
89 : 'Invalid property: ' . $name;
90 throw new \BadMethodCallException($msg);
91 }
92 }
93