async openAPIRequest()

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();
      }
    }
  }