Refactor: improved working with promises in zabbixAPICore.service.
This commit is contained in:
@@ -17,8 +17,7 @@ class ZabbixAPICoreService {
|
||||
* @return {object} response.result
|
||||
*/
|
||||
request(api_url, method, params, options, auth) {
|
||||
var deferred = this.$q.defer();
|
||||
var requestData = {
|
||||
let requestData = {
|
||||
jsonrpc: '2.0',
|
||||
method: method,
|
||||
params: params,
|
||||
@@ -27,20 +26,19 @@ class ZabbixAPICoreService {
|
||||
|
||||
if (auth === "") {
|
||||
// Reject immediately if not authenticated
|
||||
deferred.reject({data: "Not authorised."});
|
||||
return deferred.promise;
|
||||
return Promise.reject(new ZabbixAPIError({data: "Not authorised."}));
|
||||
} else if (auth) {
|
||||
// Set auth parameter only if it needed
|
||||
requestData.auth = auth;
|
||||
}
|
||||
|
||||
var requestOptions = {
|
||||
let requestOptions = {
|
||||
method: 'POST',
|
||||
url: api_url,
|
||||
data: requestData,
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
url: api_url,
|
||||
data: requestData
|
||||
}
|
||||
};
|
||||
|
||||
// Set request options for basic auth
|
||||
@@ -51,24 +49,23 @@ class ZabbixAPICoreService {
|
||||
requestOptions.headers.Authorization = options.basicAuth;
|
||||
}
|
||||
|
||||
this.backendSrv.datasourceRequest(requestOptions)
|
||||
.then((response) => {
|
||||
// General connection issues
|
||||
if (!response.data) {
|
||||
deferred.reject(response);
|
||||
}
|
||||
return this.datasourceRequest(requestOptions);
|
||||
}
|
||||
|
||||
datasourceRequest(requestOptions) {
|
||||
return this.backendSrv.datasourceRequest(requestOptions)
|
||||
.then(response => {
|
||||
if (!response.data) {
|
||||
return Promise.reject(new ZabbixAPIError({data: "General Error, no data"}));
|
||||
} else if (response.data.error) {
|
||||
|
||||
// Handle Zabbix API errors
|
||||
else if (response.data.error) {
|
||||
deferred.reject(response.data.error);
|
||||
}
|
||||
return Promise.reject(new ZabbixAPIError(response.data.error));
|
||||
}
|
||||
|
||||
deferred.resolve(response.data.result);
|
||||
}, (error) => {
|
||||
deferred.reject(error.err);
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
// Success
|
||||
return response.data.result;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +73,7 @@ class ZabbixAPICoreService {
|
||||
* @return {string} auth token
|
||||
*/
|
||||
login(api_url, username, password, options) {
|
||||
var params = {
|
||||
let params = {
|
||||
user: username,
|
||||
password: password
|
||||
};
|
||||
@@ -93,15 +90,18 @@ class ZabbixAPICoreService {
|
||||
}
|
||||
|
||||
// Define zabbix API exception type
|
||||
function ZabbixException(error) {
|
||||
this.code = error.code;
|
||||
this.errorType = error.message;
|
||||
this.message = error.data;
|
||||
}
|
||||
export class ZabbixAPIError {
|
||||
constructor(error) {
|
||||
this.code = error.code;
|
||||
this.name = error.data;
|
||||
this.message = error.data;
|
||||
this.data = error.data;
|
||||
}
|
||||
|
||||
ZabbixException.prototype.toString = function() {
|
||||
return this.errorType + ": " + this.message;
|
||||
};
|
||||
toString() {
|
||||
return this.name + ": " + this.message;
|
||||
}
|
||||
}
|
||||
|
||||
angular
|
||||
.module('grafana.services')
|
||||
|
||||
Reference in New Issue
Block a user