From 4a73957c162e0cf9b4485903ac337258c9ea9027 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Fri, 11 Nov 2016 21:56:21 +0300 Subject: [PATCH] Refactor: improved working with promises in zabbixAPICore.service. --- .../zabbixAPICore.service.js | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/datasource-zabbix/zabbixAPICore.service.js b/src/datasource-zabbix/zabbixAPICore.service.js index 2a7473c..70017d2 100644 --- a/src/datasource-zabbix/zabbixAPICore.service.js +++ b/src/datasource-zabbix/zabbixAPICore.service.js @@ -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')