Files
certd/packages/ui/certd-server/src/plugins/plugin-flex/client.ts
xiaojunnuo bf040d4c42 perf: 添加 FlexCDN 更新证书插件
- 新增 FlexCDNRefreshCert 插件类,实现更新证书功能
- 添加 FlexCDNAccess 授权类和 FlexCDNClient 客户端类
- 实现获取证书列表和更新证书的 API 调用
- 提供插件配置界面和执行逻辑
2025-05-16 00:04:52 +08:00

82 lines
1.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { HttpClient, HttpRequestConfig, ILogger } from "@certd/basic";
import { FlexCDNAccess } from "./access.js";
export class FlexCDNClient {
http: HttpClient;
logger: ILogger;
access: FlexCDNAccess;
token: string;
constructor(opts: { logger: ILogger; http: HttpClient; access: FlexCDNAccess }) {
this.logger = opts.logger;
this.http = opts.http;
this.access = opts.access;
}
async getToken() {
/*
步骤2调用API获取AccessToken
接口地址
/APIAccessTokenService/getAPIAccessToken
请求方法
POST。
请求参数
{
"type": "admin",
"accessKeyId": "zr9cmR42AEZxRyIV",
"accessKey": "2w5p5NSZZuplUPsfPMzM7dFmTrI7xyja"
}
其中
type - 如果是用户即平台用户AccessKey则值为 user如果是管理员即系统用户AccessKey则值为 admin
accessKeyId 和 accessKey 换成你在步骤1中创建的AccessKey对应的数据。
响应结果
{
"code": 200,
"data": {
"token": "IKNSMufZ1vDiXp5rSd9QR01m1174Oum5sah4amWFgbRb7lOKjuk62Spl7hgcazctzGhGG7jPgfmYUPojulC0FK5cLbrj8n7kxW7BtSawH9gWW14IWOzBY6UcpyXQndFu",
"expiresAt": 1609686945
},
"message": "ok"
}
*/
const res = await this.doRequest({
url: "/APIAccessTokenService/getAPIAccessToken",
method: "POST",
data: {
type: this.access.type,
accessKeyId: this.access.accessKeyId,
accessKey: this.access.accessKey,
},
});
this.token = res.token
return this.token
}
async doRequest(req: HttpRequestConfig) {
const headers = {
...req.headers,
}
if(this.token){
headers[ "X-Cloud-Access-Token"] = this.token
}
const res = await this.http.request({
...req,
headers,
baseURL: this.access.endpoint,
logRes:false,
logParams:false,
skipSslVerify: true,
});
if (res.code === 200) {
return res.data;
} else {
throw new Error(res.message);
}
}
}