UNPKG

@elshaer/homebridge-lg-thinq

Version:

A Homebridge plugin for controlling/monitoring LG ThinQ device via LG ThinQ platform.

57 lines 2.53 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.requestClient = void 0; const axios_1 = __importDefault(require("axios")); const errors_1 = require("../errors"); const axios_retry_1 = __importDefault(require("axios-retry")); const client = axios_1.default.create(); client.defaults.timeout = 60000; // 60s timeout (0, axios_retry_1.default)(client, { retries: 2, retryDelay: (retryCount) => { return retryCount * 2000; }, retryCondition: (err) => { var _a; if (((_a = err.code) === null || _a === void 0 ? void 0 : _a.indexOf('ECONN')) === 0) { return true; } return err.response !== undefined && [500, 501, 502, 503, 504].includes(err.response.status); }, shouldResetTimeout: true, // reset timeout each retries }); client.interceptors.response.use((response) => { // thinq1 response if (typeof response.data === 'object' && 'lgedmRoot' in response.data && 'returnCd' in response.data.lgedmRoot) { const data = response.data.lgedmRoot; const code = data.returnCd; if (errors_1.NotConnectedErrorCodes.includes(code)) { throw new errors_1.NotConnectedError(data.returnMsg || ''); } else if (code === errors_1.TokenExpiredErrorCode) { throw new errors_1.TokenExpiredError(data.returnMsg); } else if (code !== '0000') { throw new errors_1.MonitorError(code + ' - ' + data.returnMsg || ''); } } return response; }, (err) => { var _a, _b, _c; if (!err.response || ((_a = err.response.data) === null || _a === void 0 ? void 0 : _a.resultCode) === '9999') { throw new errors_1.NotConnectedError(); } else if (((_b = err.response.data) === null || _b === void 0 ? void 0 : _b.resultCode) === errors_1.TokenExpiredErrorCode) { throw new errors_1.TokenExpiredError(); } else if (((_c = err.response.data) === null || _c === void 0 ? void 0 : _c.resultCode) === errors_1.ManualProcessNeededErrorCode) { throw new errors_1.ManualProcessNeeded('Please open the native LG App and sign in to your account to see what happened, ' + 'maybe new agreement need your accept. Then try restarting Homebridge.'); } return Promise.reject(err); }); exports.requestClient = client; //# sourceMappingURL=request.js.map