diff options
author | Daniel Kesselberg <mail@danielkesselberg.de> | 2021-08-04 14:14:06 +0300 |
---|---|---|
committer | Daniel Kesselberg <mail@danielkesselberg.de> | 2021-08-04 15:48:25 +0300 |
commit | 1d2da1b2c58f1cc5a11f8626785c0120ed289fd9 (patch) | |
tree | abe9d0a9829f2d894f9b7176d9de0981ae271bea /lib/Controller | |
parent | a0d72077203f108f015c12619d06edfd923e8a32 (diff) |
Catch guzzle error in proxy
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
Diffstat (limited to 'lib/Controller')
-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'); } } |