import db from "../../db" import { LarkServer } from "../../types" import netTool from "../netTool" /** * 发送网络请求并返回一个解析为响应数据的Promise。 * @param url - 要发送请求的URL。 * @param method - 请求使用的HTTP方法。 * @param queryParams - 要包含在URL中的查询参数。 * @param payload - 请求的有效负载数据。 * @param additionalHeaders - 要包含在请求中的附加头。 * @param appName - 应用名称,用于获取授权令牌。 * @returns 一个解析为响应数据的Promise。 * @throws 如果网络响应不成功或存在解析错误,则抛出错误。 */ const larkNetTool = async ({ url, method, queryParams, payload, additionalHeaders, appName = "egg", }: { url: string method: string queryParams?: any payload?: any additionalHeaders?: any appName?: string }): Promise => { const headersWithAuth = { Authorization: `Bearer ${await db.tenantAccessToken.get(appName)}`, ...additionalHeaders, } return netTool({ url, method, queryParams, payload, additionalHeaders: headersWithAuth, }).catch((error) => { console.error("larkNetTool catch error: ", error) return { code: 1, data: null, msg: error.message || "网络请求异常", } as T }) } /** * 发送GET请求并返回一个解析为响应数据的Promise。 * * @param appName - 应用名称,用于获取授权令牌。 * @returns 一个函数,该函数接受URL、查询参数和附加头,并返回一个解析为响应数据的Promise。 */ larkNetTool.get = (appName?: string) => ( url: string, queryParams?: any, additionalHeaders?: any ): Promise => larkNetTool({ url, method: "get", queryParams, additionalHeaders, appName, }) /** * 发送POST请求并返回一个解析为响应数据的Promise。 * * @param appName - 应用名称,用于获取授权令牌。 * @returns 一个函数,该函数接受URL、有效负载、查询参数和附加头,并返回一个解析为响应数据的Promise。 */ larkNetTool.post = (appName?: string) => ( url: string, payload?: any, queryParams?: any, additionalHeaders?: any ): Promise => larkNetTool({ url, method: "post", payload, queryParams, additionalHeaders, appName, }) /** * 发送DELETE请求并返回一个解析为响应数据的Promise。 * * @param appName - 应用名称,用于获取授权令牌。 * @returns 一个函数,该函数接受URL、有效负载和附加头,并返回一个解析为响应数据的Promise。 */ larkNetTool.del = (appName?: string) => ( url: string, payload: any, additionalHeaders?: any ): Promise => larkNetTool({ url, method: "delete", payload, additionalHeaders, appName }) /** * 发送PATCH请求并返回一个解析为响应数据的Promise。 * * @param appName - 应用名称,用于获取授权令牌。 * @returns 一个函数,该函数接受URL、有效负载和附加头,并返回一个解析为响应数据的Promise。 */ larkNetTool.patch = (appName?: string) => ( url: string, payload: any, additionalHeaders?: any ): Promise => larkNetTool({ url, method: "patch", payload, additionalHeaders, appName }) export default larkNetTool