mirror of https://github.com/certd/certd
79 lines
2.0 KiB
TypeScript
79 lines
2.0 KiB
TypeScript
import { getGlobalAgents, ILogger } from "@certd/basic";
|
|
|
|
export class AliyunClient {
|
|
client: any;
|
|
logger: ILogger;
|
|
agent: any;
|
|
useROAClient: boolean;
|
|
|
|
constructor(opts: { logger: ILogger; useROAClient?: boolean }) {
|
|
this.logger = opts.logger;
|
|
this.useROAClient = opts.useROAClient || false;
|
|
const agents = getGlobalAgents();
|
|
this.agent = agents.httpsAgent;
|
|
}
|
|
|
|
async getSdk() {
|
|
if (this.useROAClient) {
|
|
return await this.getROAClient();
|
|
}
|
|
const Core = await import("@alicloud/pop-core");
|
|
return Core.default;
|
|
}
|
|
|
|
async getROAClient() {
|
|
const Core = await import("@alicloud/pop-core");
|
|
console.log("aliyun sdk", Core);
|
|
// @ts-ignore
|
|
return Core.ROAClient;
|
|
}
|
|
|
|
async init(opts: any) {
|
|
const Core = await this.getSdk();
|
|
this.client = new Core(opts);
|
|
return this.client;
|
|
}
|
|
|
|
checkRet(ret: any) {
|
|
if (ret.Code != null && ret.Code !== "OK" && ret.Message !== "OK") {
|
|
throw new Error("执行失败:" + ret.Message);
|
|
}
|
|
}
|
|
|
|
async request(
|
|
name: string,
|
|
params: any,
|
|
requestOption: any = {
|
|
method: "POST",
|
|
formatParams: false,
|
|
}
|
|
) {
|
|
if (!this.useROAClient) {
|
|
requestOption.agent = this.agent;
|
|
}
|
|
|
|
const getNumberFromEnv = (key: string, defValue: number) => {
|
|
const value = process.env[key];
|
|
if (value) {
|
|
try {
|
|
return parseInt(value);
|
|
} catch (e: any) {
|
|
this.logger.error(`环境变量${key}设置错误,应该是一个数字,当前值为${value},将使用默认值:${defValue}`);
|
|
return defValue;
|
|
}
|
|
} else {
|
|
return defValue;
|
|
}
|
|
};
|
|
|
|
// 连接超时设置,仅对当前请求有效。
|
|
requestOption.connectTimeout = getNumberFromEnv("ALIYUN_CLIENT_CONNECT_TIMEOUT", 8000);
|
|
// 读超时设置,仅对当前请求有效。
|
|
requestOption.readTimeout = getNumberFromEnv("ALIYUN_CLIENT_READ_TIMEOUT", 8000);
|
|
|
|
const res = await this.client.request(name, params, requestOption);
|
|
this.checkRet(res);
|
|
return res;
|
|
}
|
|
}
|