PluginProbe
Media Cloud Sync / 1.3.11
Media Cloud Sync v1.3.11
1.4.1 1.4.0 1.3.12 1.3.11 1.3.10 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.2.0 1.2.10 1.2.11 1.2.12 1.2.13 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 All 35 releases
media-cloud-sync / includes / sdk / s3 / GuzzleHttp / Psr7 / InflateStream.php

InflateStream.php in Media Cloud Sync 1.3.11, at includes/sdk/s3/GuzzleHttp/Psr7/InflateStream.php

34 lines 1.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare (strict_types=1);
4 namespace Dudlewebs\WPMCS\s3\GuzzleHttp\Psr7;
5
6 use Dudlewebs\WPMCS\s3\Psr\Http\Message\StreamInterface;
7 /**
8 * Uses PHP's zlib.inflate filter to inflate zlib (HTTP deflate, RFC1950) or gzipped (RFC1952) content.
9 *
10 * This stream decorator converts the provided stream to a PHP stream resource,
11 * then appends the zlib.inflate filter. The stream is then converted back
12 * to a Guzzle stream resource to be used as a Guzzle stream.
13 *
14 * @see https://datatracker.ietf.org/doc/html/rfc1950
15 * @see https://datatracker.ietf.org/doc/html/rfc1952
16 * @see https://www.php.net/manual/en/filters.compression.php
17 */
18 final class InflateStream implements StreamInterface
19 {
20 use StreamDecoratorTrait;
21 /** @var StreamInterface */
22 private $stream;
23 public function __construct(StreamInterface $stream)
24 {
25 $resource = StreamWrapper::getResource($stream);
26 // Specify window=15+32, so zlib will use header detection to both gzip (with header) and zlib data
27 // See https://www.zlib.net/manual.html#Advanced definition of inflateInit2
28 // "Add 32 to windowBits to enable zlib and gzip decoding with automatic header detection"
29 // Default window size is 15.
30 \stream_filter_append($resource, 'zlib.inflate', \STREAM_FILTER_READ, ['window' => 15 + 32]);
31 $this->stream = $stream->isSeekable() ? new Stream($resource) : new NoSeekStream(new Stream($resource));
32 }
33 }
34