@elshaer/homebridge-lg-thinq
Version:
A Homebridge plugin for controlling/monitoring LG ThinQ device via LG ThinQ platform.
57 lines • 2.53 kB
JavaScript
;
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