PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.6
Booking for Appointments and Events Calendar – Amelia v2.4.6
2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / vendor / guzzlehttp / psr7 / src / StreamWrapper.php
ameliabooking / vendor / guzzlehttp / psr7 / src Last commit date
Exception 7 months ago AppendStream.php 7 months ago BufferStream.php 7 months ago CachingStream.php 7 months ago DroppingStream.php 7 months ago FnStream.php 7 months ago Header.php 7 months ago HttpFactory.php 7 months ago InflateStream.php 7 months ago LazyOpenStream.php 7 months ago LimitStream.php 7 months ago Message.php 7 months ago MessageTrait.php 7 months ago MimeType.php 7 months ago MultipartStream.php 7 months ago NoSeekStream.php 7 months ago PumpStream.php 7 months ago Query.php 7 months ago Request.php 7 months ago Response.php 7 months ago Rfc7230.php 7 months ago ServerRequest.php 7 months ago Stream.php 7 months ago StreamDecoratorTrait.php 7 months ago StreamWrapper.php 7 months ago UploadedFile.php 7 months ago Uri.php 7 months ago UriComparator.php 7 months ago UriNormalizer.php 7 months ago UriResolver.php 7 months ago Utils.php 7 months ago
StreamWrapper.php
208 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AmeliaVendor\GuzzleHttp\Psr7;
6
7 use AmeliaVendor\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