UNPKG

node-cnb

Version:

node sdk for cnb open api

89 lines 3.43 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getClient = void 0; var axios_1 = __importDefault(require("axios")); var paths_json_1 = __importDefault(require("./paths.json")); var callApi = function (baseUrl, token, methodPath, params) { console.log("call", methodPath); var methodValue = paths_json_1.default[methodPath]; if (!methodValue) { throw new Error("未能找出对应api路径"); } var parameters = methodValue.parameters, method = methodValue.method; var path = methodValue.path; parameters .filter(function (item) { return item.in === "path"; }) .forEach(function (item) { path = path.replace("{".concat(item.name, "}"), params[item.name]); }); var queryParams = {}; parameters .filter(function (item) { return item.in === "query"; }) .forEach(function (item) { queryParams[item.name] = params === null || params === void 0 ? void 0 : params[item.name]; }); var bodyParams = {}; parameters .filter(function (item) { return item.in === "body"; }) .forEach(function (item) { Object.assign(bodyParams, (params === null || params === void 0 ? void 0 : params[item.name]) || {}); }); var apiPath = "".concat(baseUrl).concat(path); console.log("api call", apiPath, method); return (0, axios_1.default)({ method: method, url: apiPath, headers: { Authorization: "Bearer ".concat(token), accept: "application/json", }, params: queryParams, data: bodyParams, }).then(function (res) { return res.data; }); }; var getClient = function (baseUrl, token) { function getProxyForPath(path) { var methodValue = paths_json_1.default[path]; if (methodValue) { return function (params) { return callApi(baseUrl, token, path, params); }; } else { return new Proxy({}, { get: function (target, prop) { return getProxyForPath(path + "." + String(prop)); }, }); } } function getProxyForTagMethod(tag) { return new Proxy({}, { get: function (target, method) { var path = Object.keys(paths_json_1.default).find(function (path) { var item = paths_json_1.default[path]; return item.tags[0] === tag && item.operationId === method; }); var methodValue = paths_json_1.default[path]; if (!methodValue) { throw new Error("\u672A\u80FD\u627E\u5230\u5BF9\u5E94\u7684api\u8DEF\u5F84: ".concat(tag, " ").concat(String(method))); } return function (params) { return callApi(baseUrl, token, path, params); }; }, }); } return new Proxy({}, { get: function (target, prop) { console.log("get prop", prop); if (/^[A-Z]/.test(prop.charAt(0))) { return getProxyForTagMethod(prop); } else { return getProxyForPath(String(prop)); } }, }); }; exports.getClient = getClient; //# sourceMappingURL=index.js.map