diff options
author | Christian Cleberg <hello@cleberg.net> | 2023-05-22 15:19:08 -0500 |
---|---|---|
committer | Christian Cleberg <hello@cleberg.net> | 2023-05-22 15:19:08 -0500 |
commit | 39e8fb2036945303836c461a61f133b0059c8991 (patch) | |
tree | 39b747cf3c9eb82af48117781a436a91f1314776 /vendor/guzzlehttp/psr7/src/DroppingStream.php | |
download | vox-populi-39e8fb2036945303836c461a61f133b0059c8991.tar.gz vox-populi-39e8fb2036945303836c461a61f133b0059c8991.tar.bz2 vox-populi-39e8fb2036945303836c461a61f133b0059c8991.zip |
initial commit
Diffstat (limited to 'vendor/guzzlehttp/psr7/src/DroppingStream.php')
-rw-r--r-- | vendor/guzzlehttp/psr7/src/DroppingStream.php | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/guzzlehttp/psr7/src/DroppingStream.php b/vendor/guzzlehttp/psr7/src/DroppingStream.php new file mode 100644 index 0000000..8935c80 --- /dev/null +++ b/vendor/guzzlehttp/psr7/src/DroppingStream.php @@ -0,0 +1,42 @@ +<?php +namespace GuzzleHttp\Psr7; + +use Psr\Http\Message\StreamInterface; + +/** + * Stream decorator that begins dropping data once the size of the underlying + * stream becomes too full. + */ +class DroppingStream implements StreamInterface +{ + use StreamDecoratorTrait; + + private $maxLength; + + /** + * @param StreamInterface $stream Underlying stream to decorate. + * @param int $maxLength Maximum size before dropping data. + */ + public function __construct(StreamInterface $stream, $maxLength) + { + $this->stream = $stream; + $this->maxLength = $maxLength; + } + + public function write($string) + { + $diff = $this->maxLength - $this->stream->getSize(); + + // Begin returning 0 when the underlying stream is too large. + if ($diff <= 0) { + return 0; + } + + // Write the stream or a subset of the stream if needed. + if (strlen($string) < $diff) { + return $this->stream->write($string); + } + + return $this->stream->write(substr($string, 0, $diff)); + } +} |