diff options
author | Christoph Wurst <ChristophWurst@users.noreply.github.com> | 2021-08-09 17:43:21 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-09 17:43:21 +0300 |
commit | 3ea67e129797865ec4b0c7ea909a54cdfca42333 (patch) | |
tree | ba672fc093c203b28ebdd27ef48d8b6a5406bb36 /lib | |
parent | 5d542b5e698beb662259f41e8abcf7207a06820b (diff) | |
parent | 1d2da1b2c58f1cc5a11f8626785c0120ed289fd9 (diff) |
Merge pull request #5392 from nextcloud/enh/noid/catch-guzzle-error-in-proxy
Catch guzzle error in proxy
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Controller/ProxyController.php | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/lib/Controller/ProxyController.php b/lib/Controller/ProxyController.php index 1cafae9ce..af0d73374 100644 --- a/lib/Controller/ProxyController.php +++ b/lib/Controller/ProxyController.php @@ -34,6 +34,8 @@ use OCP\Http\Client\IClientService; use OCP\IRequest; use OCP\ISession; use OCP\IURLGenerator; +use Psr\Http\Client\ClientExceptionInterface; +use Psr\Log\LoggerInterface; class ProxyController extends Controller { @@ -46,29 +48,21 @@ class ProxyController extends Controller { /** @var IClientService */ private $clientService; - /** @var string */ - private $hostname; + /** @var LoggerInterface */ + private $logger; - /** - * @param string $appName - * @param IRequest $request - * @param IURLGenerator $urlGenerator - * @param ISession $session - * @param IClientService $clientService - * @param string $hostname - */ public function __construct(string $appName, IRequest $request, IURLGenerator $urlGenerator, ISession $session, IClientService $clientService, - $hostname) { + LoggerInterface $logger) { parent::__construct($appName, $request); $this->request = $request; $this->urlGenerator = $urlGenerator; $this->session = $session; $this->clientService = $clientService; - $this->hostname = $hostname; + $this->logger = $logger; } /** @@ -120,8 +114,14 @@ class ProxyController extends Controller { $this->session->close(); $client = $this->clientService->newClient(); - $response = $client->get($src); - $content = $response->getBody(); + try { + $response = $client->get($src); + $content = $response->getBody(); + } catch (ClientExceptionInterface $e) { + $this->logger->notice('Unable to proxy image', ['exception' => $e]); + $content = file_get_contents(__DIR__ . '/../../img/blocked-image.png'); + } + return new ProxyDownloadResponse($content, $src, 'application/octet-stream'); } } |