PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 18.4
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v18.4
28.5 28.4 28.3 28.2 28.1 28.0 27.9 27.8 27.7 27.6 27.5 trunk 18.0 18.1 18.2 18.3 18.4 18.4.1 18.5 18.5.1 18.6 18.7 18.8 18.9 19.0 All 129 releases
wordpress-seo / vendor_prefixed / guzzlehttp / psr7 / src / StreamWrapper.php

StreamWrapper.php in Yoast SEO – Advanced SEO with real-time guidance and built-in AI 18.4, at vendor_prefixed/guzzlehttp/psr7/src/StreamWrapper.php

106 lines 3.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace YoastSEO_Vendor\GuzzleHttp\Psr7;
4
5 use YoastSEO_Vendor\Psr\Http\Message\StreamInterface;
6 /**
7 * Converts Guzzle streams into PHP stream resources.
8 *
9 * @final
10 */
11 class StreamWrapper
12 {
13 /** @var resource */
14 public $context;
15 /** @var StreamInterface */
16 private $stream;
17 /** @var string r, r+, or w */
18 private $mode;
19 /**
20 * Returns a resource representing the stream.
21 *
22 * @param StreamInterface $stream The stream to get a resource for
23 *
24 * @return resource
25 *
26 * @throws \InvalidArgumentException if stream is not readable or writable
27 */
28 public static function getResource(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $stream)
29 {
30 self::register();
31 if ($stream->isReadable()) {
32 $mode = $stream->isWritable() ? 'r+' : 'r';
33 } elseif ($stream->isWritable()) {
34 $mode = 'w';
35 } else {
36 throw new \InvalidArgumentException('The stream must be readable, ' . 'writable, or both.');
37 }
38 return \fopen('guzzle://stream', $mode, null, self::createStreamContext($stream));
39 }
40 /**
41 * Creates a stream context that can be used to open a stream as a php stream resource.
42 *
43 * @param StreamInterface $stream
44 *
45 * @return resource
46 */
47 public static function createStreamContext(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $stream)
48 {
49 return \stream_context_create(['guzzle' => ['stream' => $stream]]);
50 }
51 /**
52 * Registers the stream wrapper if needed
53 */
54 public static function register()
55 {
56 if (!\in_array('guzzle', \stream_get_wrappers())) {
57 \stream_wrapper_register('guzzle', __CLASS__);
58 }
59 }
60 public function stream_open($path, $mode, $options, &$opened_path)
61 {
62 $options = \stream_context_get_options($this->context);
63 if (!isset($options['guzzle']['stream'])) {
64 return \false;
65 }
66 $this->mode = $mode;
67 $this->stream = $options['guzzle']['stream'];
68 return \true;
69 }
70 public function stream_read($count)
71 {
72 return $this->stream->read($count);
73 }
74 public function stream_write($data)
75 {
76 return (int) $this->stream->write($data);
77 }
78 public function stream_tell()
79 {
80 return $this->stream->tell();
81 }
82 public function stream_eof()
83 {
84 return $this->stream->eof();
85 }
86 public function stream_seek($offset, $whence)
87 {
88 $this->stream->seek($offset, $whence);
89 return \true;
90 }
91 public function stream_cast($cast_as)
92 {
93 $stream = clone $this->stream;
94 return $stream->detach();
95 }
96 public function stream_stat()
97 {
98 static $modeMap = ['r' => 33060, 'rb' => 33060, 'r+' => 33206, 'w' => 33188, 'wb' => 33188];
99 return ['dev' => 0, 'ino' => 0, 'mode' => $modeMap[$this->mode], 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => $this->stream->getSize() ?: 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0];
100 }
101 public function url_stat($path, $flags)
102 {
103 return ['dev' => 0, 'ino' => 0, 'mode' => 0, 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0];
104 }
105 }
106