123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.request = exports.axios = void 0;
- const chalk_1 = __importDefault(require("chalk"));
- const axios_1 = __importDefault(require("axios"));
- const DEF_TIMEOUT = 10000;
- const DEF_RETRIES = 2;
- const DEF_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36';
- exports.axios = axios_1.default.create({
- headers: {
- 'user-agent': DEF_UA
- },
- withCredentials: true
- });
- const request = (config, retries = 0) => {
- config.timeout = config.timeout || DEF_TIMEOUT;
- config.maxRetries = config.maxRetries || DEF_RETRIES;
- const _config = JSON.stringify(config);
- const cancelTokenSource = axios_1.default.CancelToken.source();
- config.cancelToken = cancelTokenSource.token;
- console.debug(chalk_1.default.white(`[request] ${config.method || 'GET'} ${config.url}`, config.params ? JSON.stringify(config.params) : ''));
- return new Promise((resolve, reject) => {
- let done = false;
- const timer = setTimeout(() => {
- if (!done) {
- cancelTokenSource.cancel();
- // @ts-ignore
- if (retries >= config.maxRetries) {
- reject(new Error(`max retries exceeded (${retries})`));
- }
- else {
- retries++;
- console.info(chalk_1.default.magenta(`[request] ${config.url} timeouted, canceled, retry ${retries}`));
- resolve(exports.request(JSON.parse(_config), retries));
- }
- }
- }, config.timeout);
- const startAt = Date.now();
- exports.axios(config)
- .then((res) => {
- console.debug(chalk_1.default.white(`└─ ${res.status} ${Date.now() - startAt}ms`));
- resolve(res);
- })
- .catch((e) => {
- if (e.response && e.response.data) {
- console.error('[error.message]', e.message);
- console.error('[error.response]', e.response.data);
- }
- reject(e);
- })
- .finally(() => {
- done = true;
- clearTimeout(timer);
- });
- });
- };
- exports.request = request;
|