Files
certd/packages/ui/certd-server/src/plugins/plugin-upyun/client.ts

78 lines
1.7 KiB
TypeScript
Raw Normal View History

2025-04-05 00:46:56 +08:00
import { UpyunAccess } from "./access.js";
import { HttpClient, ILogger } from "@certd/basic";
import { CertInfo } from "@certd/plugin-cert";
export type UpyunClientOptions = {
access: UpyunAccess
logger: ILogger;
http: HttpClient
}
export class UpyunClient {
opts: UpyunClientOptions;
constructor(opts: UpyunClientOptions) {
this.opts = opts;
}
async uploadCert(cookie: string,cert:CertInfo) {
// https://console.upyun.com/api/https/certificate/
const res = await this.doRequest({
cookie: cookie,
url: "https://console.upyun.com/api/https/certificate/",
method: "POST",
data: {
certificate: cert.crt,
private_key: cert.key
}
});
return res.data.result.certificate_id;
}
async getLoginToken() {
const access = this.opts.access
const http = this.opts.http;
const res = await http.request({
url: "https://console.upyun.com/accounts/signin/",
method: "POST",
data: {
username: access.username,
password: access.password
},
logRes: false,
2025-05-10 17:29:10 +08:00
returnOriginRes: true
2025-04-05 00:46:56 +08:00
});
if (res.data?.errors?.length > 0) {
throw new Error(JSON.stringify(res.data.msg));
}
const cookie = res.headers["set-cookie"];
return cookie;
}
async doRequest(req: {
cookie: string,
url: string,
method: string,
data: any
}) {
const res = await this.opts.http.request({
url: req.url,
method: req.method,
data: req.data,
headers: {
Cookie: req.cookie
}
});
if (res.msg.errors.length > 0) {
throw new Error(JSON.stringify(res.msg));
}
if(res.data?.error_code){
throw new Error(res.data?.message);
}
return res;
}
}