PluginProbe ʕ •ᴥ•ʔ
ShareThis Dashboard for Google Analytics / 3.1.7
ShareThis Dashboard for Google Analytics v3.1.7
3.3.2 trunk 1.0.7 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2.5 2.3.5 2.3.6 2.3.7 2.3.8 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 3.0.0 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.3.0 3.3.1
googleanalytics / lib / analytics-admin / vendor / guzzlehttp / psr7 / src / StreamWrapper.php
googleanalytics / lib / analytics-admin / vendor / guzzlehttp / psr7 / src Last commit date
Exception 3 years ago AppendStream.php 3 years ago BufferStream.php 3 years ago CachingStream.php 3 years ago DroppingStream.php 3 years ago FnStream.php 3 years ago Header.php 3 years ago HttpFactory.php 3 years ago InflateStream.php 3 years ago LazyOpenStream.php 3 years ago LimitStream.php 3 years ago Message.php 3 years ago MessageTrait.php 3 years ago MimeType.php 3 years ago MultipartStream.php 3 years ago NoSeekStream.php 3 years ago PumpStream.php 3 years ago Query.php 3 years ago Request.php 3 years ago Response.php 3 years ago Rfc7230.php 3 years ago ServerRequest.php 3 years ago Stream.php 3 years ago StreamDecoratorTrait.php 3 years ago StreamWrapper.php 3 years ago UploadedFile.php 3 years ago Uri.php 3 years ago UriComparator.php 3 years ago UriNormalizer.php 3 years ago UriResolver.php 3 years ago Utils.php 3 years ago
StreamWrapper.php
176 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace GuzzleHttp\Psr7;
6
7 use 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<int|string, int>
126 */
127 public function stream_stat(): array
128 {
129 static $modeMap = [
130 'r' => 33060,
131 'rb' => 33060,
132 'r+' => 33206,
133 'w' => 33188,
134 'wb' => 33188
135 ];
136
137 return [
138 'dev' => 0,
139 'ino' => 0,
140 'mode' => $modeMap[$this->mode],
141 'nlink' => 0,
142 'uid' => 0,
143 'gid' => 0,
144 'rdev' => 0,
145 'size' => $this->stream->getSize() ?: 0,
146 'atime' => 0,
147 'mtime' => 0,
148 'ctime' => 0,
149 'blksize' => 0,
150 'blocks' => 0
151 ];
152 }
153
154 /**
155 * @return array<int|string, int>
156 */
157 public function url_stat(string $path, int $flags): array
158 {
159 return [
160 'dev' => 0,
161 'ino' => 0,
162 'mode' => 0,
163 'nlink' => 0,
164 'uid' => 0,
165 'gid' => 0,
166 'rdev' => 0,
167 'size' => 0,
168 'atime' => 0,
169 'mtime' => 0,
170 'ctime' => 0,
171 'blksize' => 0,
172 'blocks' => 0
173 ];
174 }
175 }
176