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 / StreamWrapper.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
StreamWrapper.php
208 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 * Converts Guzzle streams into PHP stream resources.
11 *
12 * @see https://www.php.net/streamwrapper
13 */
14 final class StreamWrapper
15 {
16 /** @var resource */
17 public $context;
18
19 /** @var StreamInterface */
20 private $stream;
21
22 /** @var string r, r+, or w */
23 private $mode;
24
25 /**
26 * Returns a resource representing the stream.
27 *
28 * @param StreamInterface $stream The stream to get a resource for
29 *
30 * @return resource
31 *
32 * @throws \InvalidArgumentException if stream is not readable or writable
33 */
34 public static function getResource(StreamInterface $stream)
35 {
36 self::register();
37
38 if ($stream->isReadable()) {
39 $mode = $stream->isWritable() ? 'r+' : 'r';
40 } elseif ($stream->isWritable()) {
41 $mode = 'w';
42 } else {
43 throw new \InvalidArgumentException('The stream must be readable, '
44 .'writable, or both.');
45 }
46
47 return fopen('guzzle://stream', $mode, false, self::createStreamContext($stream));
48 }
49
50 /**
51 * Creates a stream context that can be used to open a stream as a php stream resource.
52 *
53 * @return resource
54 */
55 public static function createStreamContext(StreamInterface $stream)
56 {
57 return stream_context_create([
58 'guzzle' => ['stream' => $stream],
59 ]);
60 }
61
62 /**
63 * Registers the stream wrapper if needed
64 */
65 public static function register(): void
66 {
67 if (!in_array('guzzle', stream_get_wrappers())) {
68 stream_wrapper_register('guzzle', __CLASS__);
69 }
70 }
71
72 public function stream_open(string $path, string $mode, int $options, ?string &$opened_path = null): bool
73 {
74 $options = stream_context_get_options($this->context);
75
76 if (!isset($options['guzzle']['stream'])) {
77 return false;
78 }
79
80 $this->mode = $mode;
81 $this->stream = $options['guzzle']['stream'];
82
83 return true;
84 }
85
86 public function stream_read(int $count): string
87 {
88 return $this->stream->read($count);
89 }
90
91 public function stream_write(string $data): int
92 {
93 return $this->stream->write($data);
94 }
95
96 public function stream_tell(): int
97 {
98 return $this->stream->tell();
99 }
100
101 public function stream_eof(): bool
102 {
103 return $this->stream->eof();
104 }
105
106 public function stream_seek(int $offset, int $whence): bool
107 {
108 $this->stream->seek($offset, $whence);
109
110 return true;
111 }
112
113 /**
114 * @return resource|false
115 */
116 public function stream_cast(int $cast_as)
117 {
118 $stream = clone $this->stream;
119 $resource = $stream->detach();
120
121 return $resource ?? false;
122 }
123
124 /**
125 * @return array{
126 * dev: int,
127 * ino: int,
128 * mode: int,
129 * nlink: int,
130 * uid: int,
131 * gid: int,
132 * rdev: int,
133 * size: int,
134 * atime: int,
135 * mtime: int,
136 * ctime: int,
137 * blksize: int,
138 * blocks: int
139 * }|false
140 */
141 public function stream_stat()
142 {
143 if ($this->stream->getSize() === null) {
144 return false;
145 }
146
147 static $modeMap = [
148 'r' => 33060,
149 'rb' => 33060,
150 'r+' => 33206,
151 'w' => 33188,
152 'wb' => 33188,
153 ];
154
155 return [
156 'dev' => 0,
157 'ino' => 0,
158 'mode' => $modeMap[$this->mode],
159 'nlink' => 0,
160 'uid' => 0,
161 'gid' => 0,
162 'rdev' => 0,
163 'size' => $this->stream->getSize() ?: 0,
164 'atime' => 0,
165 'mtime' => 0,
166 'ctime' => 0,
167 'blksize' => 0,
168 'blocks' => 0,
169 ];
170 }
171
172 /**
173 * @return array{
174 * dev: int,
175 * ino: int,
176 * mode: int,
177 * nlink: int,
178 * uid: int,
179 * gid: int,
180 * rdev: int,
181 * size: int,
182 * atime: int,
183 * mtime: int,
184 * ctime: int,
185 * blksize: int,
186 * blocks: int
187 * }
188 */
189 public function url_stat(string $path, int $flags): array
190 {
191 return [
192 'dev' => 0,
193 'ino' => 0,
194 'mode' => 0,
195 'nlink' => 0,
196 'uid' => 0,
197 'gid' => 0,
198 'rdev' => 0,
199 'size' => 0,
200 'atime' => 0,
201 'mtime' => 0,
202 'ctime' => 0,
203 'blksize' => 0,
204 'blocks' => 0,
205 ];
206 }
207 }
208