UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

100 lines (99 loc) 4.27 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.request = void 0; const node_fetch_1 = __importDefault(require("node-fetch")); const form_data_1 = __importDefault(require("form-data")); const logger_1 = require("../../utils/logger"); const codeMsgMap = { 1000050272: 'No permission', 1000051991: 'The directory structure of the compressed package is faulty', // 压缩包目录结构报错 1000051990: 'An error occurs when opening the compressed package', // 打开压缩包报错 1000051989: 'The plug-in file version already exists', // 插件文件版本已存在 1000051988: 'Plug-in file not supported (file type or size)', // 插件文件不支持(文件类型或大小) 1000052041: 'Plug-in current version is less than or equal to the latest version, please change version before release', }; const getErrMsg = (error) => { var _a; return ((_a = error.localizedMessage) === null || _a === void 0 ? void 0 : _a.message) || error.msg || codeMsgMap[error.id]; }; /** * 简单封装下 Fetch 请求 * @param {string} url 请求地址 * @param {RequestOptions} [options] 请求配置参数 * @returns {Promise} Promise 对象,用于处理请求响应 */ async function request(url, options = {}) { var _a, _b; const { headers = {}, data, method = 'GET' } = options, rest = __rest(options, ["headers", "data", "method"]); let reqBody; // 根据不同请求类型,设置请求参数 if (method.toUpperCase() === 'GET') { url = appendQueryParams(url, data); } else if (data instanceof form_data_1.default) { reqBody = data; } else { reqBody = JSON.stringify(data); } const opts = Object.assign({ headers, method, body: reqBody }, rest); const response = await (0, node_fetch_1.default)(url, opts); const resHeaders = response.headers; if (response.status === 200 && response.status < 300) { const res = await response.json(); /** 业务错误码 */ if ((res === null || res === void 0 ? void 0 : res.code) || ((_a = res === null || res === void 0 ? void 0 : res.error) === null || _a === void 0 ? void 0 : _a.id)) { logger_1.logger.error(Object.assign(Object.assign({}, res.error), { ['x-tt-logid']: resHeaders.get('x-tt-logid') })); return Promise.reject({ status: (res === null || res === void 0 ? void 0 : res.code) || ((_b = res === null || res === void 0 ? void 0 : res.error) === null || _b === void 0 ? void 0 : _b.id), message: getErrMsg(res === null || res === void 0 ? void 0 : res.error) || response.statusText, }); } else { return Promise.resolve(res); } } else { const errResp = { status: response.status, message: response.statusText, }; logger_1.logger.error(Object.assign(Object.assign({}, errResp), { ['x-tt-logid']: response.headers.get('x-tt-logid') })); // 处理响应错误 return Promise.reject(errResp); } } exports.request = request; /** * 将查询参数添加到 URL 后 * @param {string} url URL 地址 * @param {object} params 查询参数对象 * @returns {string} 拼接完成后的 URL 地址 */ function appendQueryParams(url, params) { if (!params) { return url; } const paramsArr = []; Object.keys(params).forEach(key => { paramsArr.push(`${key}=${params[key]}`); }); return url.indexOf('?') === -1 ? `${url}?${paramsArr.join('&')}` : `${url}&${paramsArr.join('&')}`; }