UNPKG

@trickfilm400/cs141-ups-mangement-card

Version:
63 lines (62 loc) 2.03 kB
import axios, { AxiosHeaders, } from 'axios'; import * as https from 'https'; export class CS141 { constructor(host, username, password) { this.host = host; this.username = username; this.password = password; this.axios = axios.create({ baseURL: 'https://' + this.host, httpsAgent: new https.Agent({ rejectUnauthorized: false }), }); } request() { return new Promise((resolve, reject) => { const requestHeader = new AxiosHeaders(); if (this.headers && this.headers['set-cookie']) requestHeader['cookie'] = this.headers['set-cookie'].join(';'); this.axios .get(this.host + '/api/devices/ups/report', { headers: requestHeader, }) .then((res) => { resolve(res); }) .catch(reject); }); } handleRequest() { return new Promise((resolve, reject) => { this.request() .then((request) => { resolve(request.data); }) .catch((e) => { if (e.code === 'ERR_BAD_REQUEST') { this.login() .then((login) => { this.headers = login.headers; this.request().then((d) => resolve(d.data), reject); }) .catch(reject); } }); }); } login() { return new Promise((resolve, reject) => { this.axios .post(this.host + '/api/login', { userName: this.username, password: this.password, }) .then((res) => { if (res.status == 200) resolve(res); else reject(new Error('No 200 HTTP Status message')); }) .catch(reject); }); } }