From eef09f44c43505935dabbbf9942b457d96e81e10 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Mon, 24 Jan 2022 16:35:42 +0100 Subject: [PATCH] chg: [brood:connectionTest] Correctly handles network exceptions --- src/Model/Table/BroodsTable.php | 10 +++++++++- webroot/js/main.js | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Model/Table/BroodsTable.php b/src/Model/Table/BroodsTable.php index b0d3dca..9798260 100644 --- a/src/Model/Table/BroodsTable.php +++ b/src/Model/Table/BroodsTable.php @@ -9,6 +9,7 @@ use Cake\Core\Configure; use Cake\Http\Client; use Cake\Http\Client\Response; use Cake\Http\Exception\NotFoundException; +use Cake\Http\Client\Exception\NetworkException; use Cake\ORM\TableRegistry; use Cake\Error\Debugger; @@ -69,7 +70,14 @@ class BroodsTable extends AppTable { $brood = $this->find()->where(['id' => $id])->first(); $start = microtime(true); - $response = $this->HTTPClientGET('/instance/status.json', $brood); + try { + $response = $this->HTTPClientGET('/instance/status.json', $brood); + } catch (NetworkException $e) { + return [ + 'error' => __('Could not query status'), + 'reason' => $e->getMessage(), + ]; + } $ping = ((int)(100 * (microtime(true) - $start))); $errors = [ 403 => [ diff --git a/webroot/js/main.js b/webroot/js/main.js index c4383ff..fc2a4dc 100644 --- a/webroot/js/main.js +++ b/webroot/js/main.js @@ -55,8 +55,10 @@ function attachTestConnectionResultHtml(result, $container) { $testResultDiv.append(getKVHtml('Internal error', result, ['text-danger fw-bold'])) } else { if (result['error']) { + if (result['ping']) { + $testResultDiv.append('Status', 'OK', ['text-danger'], `${result['ping']} ms`); + } $testResultDiv.append( - getKVHtml('Status', 'OK', ['text-danger'], `${result['ping']} ms`), getKVHtml('Status', `Error: ${result['error']}`, ['text-danger']), getKVHtml('Reason', result['reason'], ['text-danger']) )