UNPKG

api-interface

Version:
90 lines (89 loc) 3.07 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.throwUrlError = exports.isNumber = exports.isUrl = exports.isHttp = exports.isQQ = exports.getRequest = exports.getRedirectUrl = exports.stringify = void 0; const https_1 = __importDefault(require("https")); function stringify(data, format) { return format ? JSON.stringify(data, null, 2) : JSON.stringify(data); } exports.stringify = stringify; function getRedirectUrl(url) { // eslint-disable-next-line no-unused-vars return new Promise((resolve, reject) => { https_1.default .get(url, async (res) => { // 处理重定向 if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400) { resolve(res.headers.location); } }) .on('error', (e) => { reject(e); }); }); } exports.getRedirectUrl = getRedirectUrl; function getRequest(url, responseType) { // eslint-disable-next-line no-unused-vars return new Promise((resolve, reject) => { https_1.default .get(url, async (res) => { // 处理重定向 if (res.statusCode && res.statusCode >= 300) { const result = await getRequest(res.headers.location); resolve(result); } // eslint-disable-next-line @typescript-eslint/no-explicit-any const data = []; res.on('data', (chunk) => { data.push(chunk); }); res.on('end', () => { if (responseType === 'arraybuffer') return resolve({ buffer: data[0] }); const raw = Buffer.concat(data).toString(); try { resolve(JSON.parse(raw)); } catch (error) { resolve({ raw }); } }); }) .on('error', (e) => { reject(e); }); }); } exports.getRequest = getRequest; function isQQ(qq) { return qq.length >= 5 && qq.length <= 10; } exports.isQQ = isQQ; function isHttp(url) { return /^(https?:)?\/\//g.test(url); } exports.isHttp = isHttp; function isUrl(str) { try { const url = new URL(str); if (/^https?:\/\//.test(str) && /([A-Za-z\d]{1,30}\.)+[A-Za-z\d]{2,5}$/.test(url.hostname)) { return true; } // eslint-disable-next-line no-empty } catch (error) { } return false; } exports.isUrl = isUrl; // eslint-disable-next-line @typescript-eslint/no-explicit-any function isNumber(value) { return !isNaN(parseFloat(value)) && isFinite(value); } exports.isNumber = isNumber; function throwUrlError() { throw new Error('"url" parameter is not legal'); } exports.throwUrlError = throwUrlError;