diff options
-rw-r--r-- | build/psalm-baseline.xml | 22 | ||||
-rw-r--r-- | lib/private/Files/Storage/DAV.php | 10 | ||||
-rw-r--r-- | lib/private/Http/Client/Response.php | 33 | ||||
-rw-r--r-- | lib/private/Remote/Instance.php | 8 | ||||
-rw-r--r-- | lib/private/Updater/VersionCheck.php | 17 | ||||
-rw-r--r-- | lib/public/Http/Client/IResponse.php | 3 |
6 files changed, 31 insertions, 62 deletions
diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index 26ee47735ad..e40c10bfc67 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -3943,12 +3943,6 @@ <code><![CDATA[ArrayCache]]></code> <code><![CDATA[ArrayCache]]></code> </InvalidClass> - <InvalidReturnStatement> - <code><![CDATA[$response->getBody()]]></code> - </InvalidReturnStatement> - <InvalidReturnType> - <code><![CDATA[fopen]]></code> - </InvalidReturnType> </file> <file src="lib/private/Files/Storage/Local.php"> <TypeDoesNotContainNull> @@ -4059,16 +4053,6 @@ <code><![CDATA[isAdmin]]></code> </UndefinedInterfaceMethod> </file> - <file src="lib/private/Http/Client/Response.php"> - <InvalidNullableReturnType> - <code><![CDATA[string|resource]]></code> - </InvalidNullableReturnType> - <NullableReturnStatement> - <code><![CDATA[$this->stream ? - $this->response->getBody()->detach(): - $this->response->getBody()->getContents()]]></code> - </NullableReturnStatement> - </file> <file src="lib/private/Installer.php"> <InvalidArgument> <code><![CDATA[false]]></code> @@ -4207,12 +4191,6 @@ </ImplementedReturnTypeMismatch> </file> <file src="lib/private/Remote/Instance.php"> - <InvalidReturnStatement> - <code><![CDATA[$request->getBody()]]></code> - </InvalidReturnStatement> - <InvalidReturnType> - <code><![CDATA[bool|string]]></code> - </InvalidReturnType> <InvalidScalarArgument> <code><![CDATA[$response]]></code> </InvalidScalarArgument> diff --git a/lib/private/Files/Storage/DAV.php b/lib/private/Files/Storage/DAV.php index 10670d6331a..afd8f87e2de 100644 --- a/lib/private/Files/Storage/DAV.php +++ b/lib/private/Files/Storage/DAV.php @@ -350,7 +350,13 @@ class DAV extends Common { } } - return $response->getBody(); + $content = $response->getBody(); + + if ($content === null || is_string($content)) { + return false; + } + + return $content; case 'w': case 'wb': case 'a': @@ -390,6 +396,8 @@ class DAV extends Common { $this->writeBack($tmpFile, $path); }); } + + return false; } public function writeBack(string $tmpFile, string $path): void { diff --git a/lib/private/Http/Client/Response.php b/lib/private/Http/Client/Response.php index adf83306d07..dc0b17ab075 100644 --- a/lib/private/Http/Client/Response.php +++ b/lib/private/Http/Client/Response.php @@ -11,49 +11,25 @@ namespace OC\Http\Client; use OCP\Http\Client\IResponse; use Psr\Http\Message\ResponseInterface; -/** - * Class Response - * - * @package OC\Http - */ class Response implements IResponse { - /** @var ResponseInterface */ - private $response; - - /** - * @var bool - */ - private $stream; + private ResponseInterface $response; + private bool $stream; - /** - * @param ResponseInterface $response - * @param bool $stream - */ - public function __construct(ResponseInterface $response, $stream = false) { + public function __construct(ResponseInterface $response, bool $stream = false) { $this->response = $response; $this->stream = $stream; } - /** - * @return string|resource - */ public function getBody() { return $this->stream ? $this->response->getBody()->detach(): $this->response->getBody()->getContents(); } - /** - * @return int - */ public function getStatusCode(): int { return $this->response->getStatusCode(); } - /** - * @param string $key - * @return string - */ public function getHeader(string $key): string { $headers = $this->response->getHeader($key); @@ -64,9 +40,6 @@ class Response implements IResponse { return $headers[0]; } - /** - * @return array - */ public function getHeaders(): array { return $this->response->getHeaders(); } diff --git a/lib/private/Remote/Instance.php b/lib/private/Remote/Instance.php index ac3233b93c9..b85813ebf71 100644 --- a/lib/private/Remote/Instance.php +++ b/lib/private/Remote/Instance.php @@ -123,7 +123,13 @@ class Instance implements IInstance { private function downloadStatus($url) { try { $request = $this->clientService->newClient()->get($url); - return $request->getBody(); + $content = $request->getBody(); + + // IResponse.getBody responds with null|resource if returning a stream response was requested. + // As that's not the case here, we can just ignore the psalm warning by adding an assertion. + assert(is_string($content)); + + return $content; } catch (\Exception $e) { return false; } diff --git a/lib/private/Updater/VersionCheck.php b/lib/private/Updater/VersionCheck.php index 53bfc0d5d5f..be410b06c3e 100644 --- a/lib/private/Updater/VersionCheck.php +++ b/lib/private/Updater/VersionCheck.php @@ -105,17 +105,20 @@ class VersionCheck { } /** - * @codeCoverageIgnore - * @param string $url - * @return resource|string * @throws \Exception */ - protected function getUrlContent($url) { - $client = $this->clientService->newClient(); - $response = $client->get($url, [ + protected function getUrlContent(string $url): string { + $response = $this->clientService->newClient()->get($url, [ 'timeout' => 5, ]); - return $response->getBody(); + + $content = $response->getBody(); + + // IResponse.getBody responds with null|resource if returning a stream response was requested. + // As that's not the case here, we can just ignore the psalm warning by adding an assertion. + assert(is_string($content)); + + return $content; } private function computeCategory(): int { diff --git a/lib/public/Http/Client/IResponse.php b/lib/public/Http/Client/IResponse.php index deec2cf97b1..53032ef2a37 100644 --- a/lib/public/Http/Client/IResponse.php +++ b/lib/public/Http/Client/IResponse.php @@ -15,8 +15,9 @@ namespace OCP\Http\Client; */ interface IResponse { /** - * @return string|resource + * @return null|resource|string * @since 8.1.0 + * @sicne 8.2.0 with stream enabled, the function returns null or a resource */ public function getBody(); |