PluginProbe
DecaLog / 4.4.0
DecaLog v4.4.0
3.0.2 3.1.0 3.10.0 3.2.0 3.3.0 3.4.0 3.4.1 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.7.0 3.7.1 3.8.0 3.9.0 3.9.1 4.0.0 4.1.0 4.2.0 4.3.0 4.3.1 4.4.0 4.5.0 All 75 releases
decalog / includes / libraries / http / client-common / Plugin / ResponseSeekableBodyPlugin.php

ResponseSeekableBodyPlugin.php in DecaLog 4.4.0, at includes/libraries/http/client-common/Plugin/ResponseSeekableBodyPlugin.php

33 lines 871 B
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
5 namespace Http\Client\Common\Plugin;
6
7 use Http\Message\Stream\BufferedStream;
8 use Http\Promise\Promise;
9 use Psr\Http\Message\RequestInterface;
10 use Psr\Http\Message\ResponseInterface;
11
12 /**
13 * Allow body used in response to be always seekable.
14 *
15 * @author Joel Wurtz <joel.wurtz@gmail.com>
16 */
17 final class ResponseSeekableBodyPlugin extends SeekableBodyPlugin
18 {
19 /**
20 * {@inheritdoc}
21 */
22 public function handleRequest(RequestInterface $request, callable $next, callable $first): Promise
23 {
24 return $next($request)->then(function (ResponseInterface $response) {
25 if ($response->getBody()->isSeekable()) {
26 return $response;
27 }
28
29 return $response->withBody(new BufferedStream($response->getBody(), $this->useFileBuffer, $this->memoryBufferSize));
30 });
31 }
32 }
33