PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.4
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.4
6.0.4 6.0.3 6.0.2 6.0.1 6.0.0 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.7.9.2 5.7.9.1 5.7.8 5.7.9 5.7.6 5.7.7 5.7.5 5.7.4 5.7.3 5.7.2 5.7.1 trunk 5.6.0 All 35 releases
← All changes | integrations/mailchimp/vendor/guzzlehttp/psr7/src/BufferStream.php +147 -0 5.8.1 → 6.0.4 View file →
@@ -1,0 +1,147 @@
1 +<?php
2 +
3 +declare(strict_types=1);
4 +
5 +namespace GuzzleHttp\Psr7;
6 +
7 +use Psr\Http\Message\StreamInterface;
8 +
9 +/**
10 + * Provides a buffer stream that can be written to to fill a buffer, and read
11 + * from to remove bytes from the buffer.
12 + *
13 + * This stream returns a "hwm" metadata value that tells upstream consumers
14 + * what the configured high water mark of the stream is, or the maximum
15 + * preferred size of the buffer.
16 + */
17 +final class BufferStream implements StreamInterface
18 +{
19 + /** @var int */
20 + private $hwm;
21 +
22 + /** @var string */
23 + private $buffer = '';
24 +
25 + /**
26 + * @param int $hwm High water mark, representing the preferred maximum
27 + * buffer size. If the size of the buffer exceeds the high
28 + * water mark, then calls to write will continue to succeed
29 + * but will return 0 to inform writers to slow down
30 + * until the buffer has been drained by reading from it.
31 + */
32 + public function __construct(int $hwm = 16384)
33 + {
34 + $this->hwm = $hwm;
35 + }
36 +
37 + public function __toString(): string
38 + {
39 + return $this->getContents();
40 + }
41 +
42 + public function getContents(): string
43 + {
44 + $buffer = $this->buffer;
45 + $this->buffer = '';
46 +
47 + return $buffer;
48 + }
49 +
50 + public function close(): void
51 + {
52 + $this->buffer = '';
53 + }
54 +
55 + public function detach()
56 + {
57 + $this->close();
58 +
59 + return null;
60 + }
61 +
62 + public function getSize(): ?int
63 + {
64 + return strlen($this->buffer);
65 + }
66 +
67 + public function isReadable(): bool
68 + {
69 + return true;
70 + }
71 +
72 + public function isWritable(): bool
73 + {
74 + return true;
75 + }
76 +
77 + public function isSeekable(): bool
78 + {
79 + return false;
80 + }
81 +
82 + public function rewind(): void
83 + {
84 + $this->seek(0);
85 + }
86 +
87 + public function seek($offset, $whence = SEEK_SET): void
88 + {
89 + throw new \RuntimeException('Cannot seek a BufferStream');
90 + }
91 +
92 + public function eof(): bool
93 + {
94 + return strlen($this->buffer) === 0;
95 + }
96 +
97 + public function tell(): int
98 + {
99 + throw new \RuntimeException('Cannot determine the position of a BufferStream');
100 + }
101 +
102 + /**
103 + * Reads data from the buffer.
104 + */
105 + public function read($length): string
106 + {
107 + $currentLength = strlen($this->buffer);
108 +
109 + if ($length >= $currentLength) {
110 + // No need to slice the buffer because we don't have enough data.
111 + $result = $this->buffer;
112 + $this->buffer = '';
113 + } else {
114 + // Slice up the result to provide a subset of the buffer.
115 + $result = substr($this->buffer, 0, $length);
116 + $this->buffer = substr($this->buffer, $length);
117 + }
118 +
119 + return $result;
120 + }
121 +
122 + /**
123 + * Writes data to the buffer.
124 + */
125 + public function write($string): int
126 + {
127 + $this->buffer .= $string;
128 +
129 + if (strlen($this->buffer) >= $this->hwm) {
130 + return 0;
131 + }
132 +
133 + return strlen($string);
134 + }
135 +
136 + /**
137 + * @return mixed
138 + */
139 + public function getMetadata($key = null)
140 + {
141 + if ($key === 'hwm') {
142 + return $this->hwm;
143 + }
144 +
145 + return $key ? null : [];
146 + }
147 +}