PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.4
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.4
4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / vendor / guzzlehttp / psr7 / src / PumpStream.php
surecart / vendor / guzzlehttp / psr7 / src Last commit date
Exception 1 year ago AppendStream.php 1 year ago BufferStream.php 1 year ago CachingStream.php 1 year ago DroppingStream.php 1 year ago FnStream.php 1 year ago Header.php 1 year ago HttpFactory.php 1 year ago InflateStream.php 1 year ago LazyOpenStream.php 1 year ago LimitStream.php 1 year ago Message.php 1 year ago MessageTrait.php 1 year ago MimeType.php 1 year ago MultipartStream.php 1 year ago NoSeekStream.php 1 year ago PumpStream.php 1 year ago Query.php 1 year ago Request.php 1 year ago Response.php 1 year ago Rfc7230.php 1 year ago ServerRequest.php 1 year ago Stream.php 1 year ago StreamDecoratorTrait.php 1 year ago StreamWrapper.php 1 year ago UploadedFile.php 1 year ago Uri.php 1 year ago UriComparator.php 1 year ago UriNormalizer.php 1 year ago UriResolver.php 1 year ago Utils.php 1 year ago
PumpStream.php
180 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace SureCartVendors\GuzzleHttp\Psr7;
6
7 use SureCartVendors\Psr\Http\Message\StreamInterface;
8
9 /**
10 * Provides a read only stream that pumps data from a PHP callable.
11 *
12 * When invoking the provided callable, the PumpStream will pass the amount of
13 * data requested to read to the callable. The callable can choose to ignore
14 * this value and return fewer or more bytes than requested. Any extra data
15 * returned by the provided callable is buffered internally until drained using
16 * the read() function of the PumpStream. The provided callable MUST return
17 * false when there is no more data to read.
18 */
19 final class PumpStream implements StreamInterface
20 {
21 /** @var callable(int): (string|false|null)|null */
22 private $source;
23
24 /** @var int|null */
25 private $size;
26
27 /** @var int */
28 private $tellPos = 0;
29
30 /** @var array */
31 private $metadata;
32
33 /** @var BufferStream */
34 private $buffer;
35
36 /**
37 * @param callable(int): (string|false|null) $source Source of the stream data. The callable MAY
38 * accept an integer argument used to control the
39 * amount of data to return. The callable MUST
40 * return a string when called, or false|null on error
41 * or EOF.
42 * @param array{size?: int, metadata?: array} $options Stream options:
43 * - metadata: Hash of metadata to use with stream.
44 * - size: Size of the stream, if known.
45 */
46 public function __construct(callable $source, array $options = [])
47 {
48 $this->source = $source;
49 $this->size = $options['size'] ?? null;
50 $this->metadata = $options['metadata'] ?? [];
51 $this->buffer = new BufferStream();
52 }
53
54 public function __toString(): string
55 {
56 try {
57 return Utils::copyToString($this);
58 } catch (\Throwable $e) {
59 if (\PHP_VERSION_ID >= 70400) {
60 throw $e;
61 }
62 trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR);
63
64 return '';
65 }
66 }
67
68 public function close(): void
69 {
70 $this->detach();
71 }
72
73 public function detach()
74 {
75 $this->tellPos = 0;
76 $this->source = null;
77
78 return null;
79 }
80
81 public function getSize(): ?int
82 {
83 return $this->size;
84 }
85
86 public function tell(): int
87 {
88 return $this->tellPos;
89 }
90
91 public function eof(): bool
92 {
93 return $this->source === null;
94 }
95
96 public function isSeekable(): bool
97 {
98 return false;
99 }
100
101 public function rewind(): void
102 {
103 $this->seek(0);
104 }
105
106 public function seek($offset, $whence = SEEK_SET): void
107 {
108 throw new \RuntimeException('Cannot seek a PumpStream');
109 }
110
111 public function isWritable(): bool
112 {
113 return false;
114 }
115
116 public function write($string): int
117 {
118 throw new \RuntimeException('Cannot write to a PumpStream');
119 }
120
121 public function isReadable(): bool
122 {
123 return true;
124 }
125
126 public function read($length): string
127 {
128 $data = $this->buffer->read($length);
129 $readLen = strlen($data);
130 $this->tellPos += $readLen;
131 $remaining = $length - $readLen;
132
133 if ($remaining) {
134 $this->pump($remaining);
135 $data .= $this->buffer->read($remaining);
136 $this->tellPos += strlen($data) - $readLen;
137 }
138
139 return $data;
140 }
141
142 public function getContents(): string
143 {
144 $result = '';
145 while (!$this->eof()) {
146 $result .= $this->read(1000000);
147 }
148
149 return $result;
150 }
151
152 /**
153 * @return mixed
154 */
155 public function getMetadata($key = null)
156 {
157 if (!$key) {
158 return $this->metadata;
159 }
160
161 return $this->metadata[$key] ?? null;
162 }
163
164 private function pump(int $length): void
165 {
166 if ($this->source !== null) {
167 do {
168 $data = ($this->source)($length);
169 if ($data === false || $data === null) {
170 $this->source = null;
171
172 return;
173 }
174 $this->buffer->write($data);
175 $length -= strlen($data);
176 } while ($length > 0);
177 }
178 }
179 }
180