chg: [server:queryAvailableSyncFilteringRules] Returns error message instead of throwing error

pull/7386/head
mokaddem 2021-04-28 15:14:28 +02:00
parent 960d46ec8a
commit 5cdba48eef
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
2 changed files with 20 additions and 11 deletions

View File

@ -4466,19 +4466,28 @@ class Server extends AppModel
public function queryAvailableSyncFilteringRules($server)
{
$syncFilteringRules = [
'error' => '',
'data' => []
];
$HttpSocket = $this->setupHttpSocket($server, null);
$uri = $server['Server']['url'] . '/servers/getAvailableSyncFilteringRules';
$request = $this->setupSyncRequest($server);
$response = $HttpSocket->get($uri, false, $request);
if ($response === false) {
throw new Exception(__('Connection failed for unknown reason.'));
try {
$response = $HttpSocket->get($uri, false, $request);
if ($response === false) {
$syncFilteringRules['error'] = __('Connection failed for unknown reason.');
return $syncFilteringRules;
}
} catch (SocketException $e) {
$syncFilteringRules['error'] = __('Connection failed for unknown reason. Error returned: %s', $e->getMessage());
return $syncFilteringRules;
}
$syncFilteringRules = [];
if ($response->isOk()) {
$syncFilteringRules = $this->jsonDecode($response->body());
$syncFilteringRules['data'] = $this->jsonDecode($response->body());
} else {
throw new Exception(__('Reponse was not OK. (HTTP code: %s)', $response->code));
$syncFilteringRules['error'] = __('Reponse was not OK. (HTTP code: %s)', $response->code);
}
return $syncFilteringRules;
}

View File

@ -118,7 +118,6 @@ $(function() {
$('div.notice-pull-rule-fetched.alert-success').show()
},
function(errorMessage) {
showMessage('fail', '<?= __('Could not fetch remote sync filtering rules.') ?>');
var regex = /Reponse was not OK\. \(HTTP code: (?<code>\d+)\)/m
var matches = errorMessage.match(regex)
if (matches !== null) {
@ -150,10 +149,11 @@ $(function() {
function getPullFilteringRules(callback, failCallback, alwaysCallback) {
$.getJSON('/servers/queryAvailableSyncFilteringRules/' + serverID, function(availableRules) {
callback(availableRules)
})
.fail(function(jqxhr, textStatus, error) {
failCallback(jqxhr.responseJSON.message !== undefined ? jqxhr.responseJSON.message : textStatus)
if (availableRules.error.length == 0) {
callback(availableRules.data)
} else {
failCallback(availableRules.error)
}
})
.always(function() {
alwaysCallback()