diff --git a/lib/private/http/client/client.php b/lib/private/http/client/client.php index 323fc0d324..b0aff10a41 100644 --- a/lib/private/http/client/client.php +++ b/lib/private/http/client/client.php @@ -120,7 +120,8 @@ class Client implements IClient { */ public function get($uri, array $options = []) { $response = $this->client->get($uri, $options); - return new Response($response); + $isStream = isset($options['stream']) && $options['stream']; + return new Response($response, $isStream); } /** diff --git a/lib/private/http/client/response.php b/lib/private/http/client/response.php index 4e9df51d77..558482491d 100644 --- a/lib/private/http/client/response.php +++ b/lib/private/http/client/response.php @@ -34,17 +34,26 @@ class Response implements IResponse { private $response; /** - * @param GuzzleResponse $response + * @var bool */ - public function __construct(GuzzleResponse $response) { + private $stream; + + /** + * @param GuzzleResponse $response + * @param bool $stream + */ + public function __construct(GuzzleResponse $response, $stream = false) { $this->response = $response; + $this->stream = $stream; } /** - * @return string + * @return string|resource */ public function getBody() { - return $this->response->getBody()->getContents(); + return $this->stream ? + $this->response->getBody()->detach(): + $this->response->getBody()->getContents(); } /** diff --git a/lib/public/http/client/iresponse.php b/lib/public/http/client/iresponse.php index 0e0ef4c501..92bb7af82d 100644 --- a/lib/public/http/client/iresponse.php +++ b/lib/public/http/client/iresponse.php @@ -30,7 +30,7 @@ namespace OCP\Http\Client; */ interface IResponse { /** - * @return string + * @return string|resource * @since 8.1.0 */ public function getBody();