PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 28.5
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v28.5
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 / InflateStream.php

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

34 lines 1.6 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 YoastSEO_Vendor\GuzzleHttp\Psr7;
5
6 use YoastSEO_Vendor\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 \YoastSEO_Vendor\Psr\Http\Message\StreamInterface
19 {
20 use StreamDecoratorTrait;
21 /** @var StreamInterface */
22 private $stream;
23 public function __construct(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $stream)
24 {
25 $resource = \YoastSEO_Vendor\GuzzleHttp\Psr7\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 \YoastSEO_Vendor\GuzzleHttp\Psr7\Stream($resource) : new \YoastSEO_Vendor\GuzzleHttp\Psr7\NoSeekStream(new \YoastSEO_Vendor\GuzzleHttp\Psr7\Stream($resource));
32 }
33 }
34