node-cnb
Version:
node sdk for cnb open api
89 lines • 3.43 kB
JavaScript
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
;