yy217-api
Version:
a API Client for YNU
63 lines • 2.64 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Approval = exports.Projects = exports.Yjs = exports.Bks = exports.Rs = exports.House = exports.getToken = exports.ApiError = void 0;
const process = require("node:process");
const axios_1 = require("axios");
const cache = require("memory-cache");
const debug_1 = require("debug");
const debug = (0, debug_1.default)('api:debug');
const warn = (0, debug_1.default)('api:warn');
class ApiError extends Error {
constructor(code, message) {
super(message);
this.code = code;
this.code = code;
}
}
exports.ApiError = ApiError;
/**
* 获取token
* @param {Object} options 其他参数
* - key api的key
* @returns 获得的Token
*/
const getToken = (options) => __awaiter(void 0, void 0, void 0, function* () {
const host = options.host || process.env.IDS_HOST;
const key = options.key || process.env.IDS_KEY;
if (!key) {
throw new ApiError(-1, '必须的参数key或环境变量API_KEY未设置.');
}
const tokenCacheKey = `api-token::${key}`;
let token = cache.get(tokenCacheKey);
if (token) {
return token;
}
else {
const { data } = yield axios_1.default.get(`${host}/gen_token?key=${key}`);
if (data.length && data.length > 0) {
debug(`获取token成功::${data}`);
// 过期时间为86400s, 过期时间减去30s, 防止token失效
cache.put(tokenCacheKey, data, (86400 * 1000 - 30 * 1000));
return data;
}
warn('获取token出错:', data);
throw new ApiError(-1, data);
}
});
exports.getToken = getToken;
exports.House = require("./house/house");
exports.Rs = require("./rs/rs");
exports.Bks = require("./bks/bks");
exports.Yjs = require("./yjs/yjs");
exports.Projects = require("./projects/projects");
exports.Approval = require("./approval/approval");
//# sourceMappingURL=index.js.map