in src/Service.ts [322:407]
async openAPIRequest(requestData) {
const { apiMeta, paramsValue, product, version, endpoint } = requestData;
// const newParamsValue = getFormatValues(paramsValue, apiMeta?.parameters);
let response = {} as any;
let data;
const profilesInfo = await this.loadProfiles();
const profiles = profilesInfo?.profiles;
// TODO:用户可以选择使用哪个profile
const security = apiMeta?.ext?.security;
const defaultCredentialType =
security?.length > 0
? security.indexOf("AK") < 0
? security.indexOf("BearerToken") < 0
? "anonymous"
: "bearer"
: "ak"
: "ak";
if (profiles?.length) {
const profile = profiles?.find((item) => item.name === profilesInfo.current);
const start = Date.now();
try {
data = await request({
accessKeyId: profile?.access_key_id,
accessKeySecret: profile?.access_key_secret,
endpoint: endpoint,
action: apiMeta?.name,
apiVersion: version,
params: paramsValue || {},
productName: product,
meta: apiMeta,
bodyStyle: undefined,
credential: { type: defaultCredentialType },
});
response = data;
// 设置状态码
// res.writeHead(200);
response.cost = Date.now() - start;
} catch (error) {
console.log("response error:", error);
if (error && error.name === "RequesctTimeoutError") {
data = {
result: {
code: "Workbench.RequestTimeoutError",
message: error.message,
notice: "This is API Workbench timeout(15000), The request may be executed successfully.",
},
entry: {
url: "",
},
};
} else {
data = {
result: {
code: "Workbench.RequestError",
message: error.message,
notice: "The request has executed failed.",
},
cost: 300,
entry: error.entry || {
url: "",
},
};
}
response = data;
response.cost = Date.now() - start;
// 设置状态码
// res.writeHead(500);
}
return {
requestId: requestData.requestId,
doc: `${product}::${version}::${apiMeta.name}`,
type: "openAPIResponse",
response,
};
} else {
let result = await vscode.window.showErrorMessage(
I18N.src.Service.AKSKTip,
I18N.src.Service.gotoConfig,
I18N.src.Service.cancel,
);
if (result === I18N.src.Service.gotoConfig) {
this.openProfileManager();
}
}
}