Files
FHeD/vendor/php-http/client-common/src/Plugin/ResponseSeekableBodyPlugin.php
Luke Tainton 75f1dde336 📈 Install Sentry
Signed-off-by: Luke Tainton <luke@tainton.uk>
2020-08-05 18:45:39 +01:00

33 lines
871 B
PHP

<?php
declare(strict_types=1);
namespace Http\Client\Common\Plugin;
use Http\Message\Stream\BufferedStream;
use Http\Promise\Promise;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
/**
* Allow body used in response to be always seekable.
*
* @author Joel Wurtz <joel.wurtz@gmail.com>
*/
final class ResponseSeekableBodyPlugin extends SeekableBodyPlugin
{
/**
* {@inheritdoc}
*/
public function handleRequest(RequestInterface $request, callable $next, callable $first): Promise
{
return $next($request)->then(function (ResponseInterface $response) {
if ($response->getBody()->isSeekable()) {
return $response;
}
return $response->withBody(new BufferedStream($response->getBody(), $this->useFileBuffer, $this->memoryBufferSize));
});
}
}