zabbix-client
Version:
Zabbix Javascript API Client
56 lines (55 loc) • 2.76 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const ZabbixAPI_1 = require("./ZabbixAPI");
const ZabbixSocket_1 = require("./ZabbixSocket");
const ZabbixResponseException_1 = require("./ZabbixResponseException");
class ZabbixClient {
constructor(url) {
this.url = url;
}
login(username, password, relogin = false) {
return __awaiter(this, void 0, void 0, function* () {
const socket = new ZabbixSocket_1.ZabbixSocket(this.url);
const api = new ZabbixAPI_1.ZabbixAPI(socket);
const token = yield api.login(username, password);
socket.setToken(token);
if (relogin)
this.ajustLogin(api, username, password);
return Promise.resolve(api);
});
}
ajustLogin(api, username, password) {
const http = api.getHttpSocket();
const interceptor = http.interceptors.response.use((response) => __awaiter(this, void 0, void 0, function* () {
if (response.data && response.data.error) {
const error = response.data.error;
if (error.data.toLowerCase().includes('re-login')) {
try {
const client = new ZabbixClient(this.url);
const newApi = yield client.login(username, password);
api.getSocket().setToken(newApi.getSocket().getToken());
const data = JSON.parse(response.config.data);
data.auth = api.getSocket().getToken();
response.config.data = JSON.stringify(data);
return http.request(response.config);
}
catch (error) {
throw new ZabbixResponseException_1.ZabbixResponseException(error.message, response.config);
}
}
}
return response;
}), error => error);
api.setReloginInterceptor(interceptor);
}
}
exports.ZabbixClient = ZabbixClient;