egg_server/services/lark/larkNetTool.ts
zhaoyingbo 6e65581bbf
All checks were successful
Egg CI/CD / build-image (push) Successful in 32s
Egg CI/CD / deploy (push) Successful in 37s
feat: 接入lint 和 husky
2024-07-25 01:48:22 +00:00

126 lines
3.4 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 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 <T = LarkServer.BaseRes>({
url,
method,
queryParams,
payload,
additionalHeaders,
appName = "egg",
}: {
url: string
method: string
queryParams?: any
payload?: any
additionalHeaders?: any
appName?: string
}): Promise<T> => {
const headersWithAuth = {
Authorization: `Bearer ${await db.tenantAccessToken.get(appName)}`,
...additionalHeaders,
}
return netTool<T>({
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) =>
<T = LarkServer.BaseRes>(
url: string,
queryParams?: any,
additionalHeaders?: any
): Promise<T> =>
larkNetTool({
url,
method: "get",
queryParams,
additionalHeaders,
appName,
})
/**
* 发送POST请求并返回一个解析为响应数据的Promise。
*
* @param appName - 应用名称,用于获取授权令牌。
* @returns 一个函数该函数接受URL、有效负载、查询参数和附加头并返回一个解析为响应数据的Promise。
*/
larkNetTool.post =
(appName?: string) =>
<T = LarkServer.BaseRes>(
url: string,
payload?: any,
queryParams?: any,
additionalHeaders?: any
): Promise<T> =>
larkNetTool({
url,
method: "post",
payload,
queryParams,
additionalHeaders,
appName,
})
/**
* 发送DELETE请求并返回一个解析为响应数据的Promise。
*
* @param appName - 应用名称,用于获取授权令牌。
* @returns 一个函数该函数接受URL、有效负载和附加头并返回一个解析为响应数据的Promise。
*/
larkNetTool.del =
(appName?: string) =>
<T = LarkServer.BaseRes>(
url: string,
payload: any,
additionalHeaders?: any
): Promise<T> =>
larkNetTool({ url, method: "delete", payload, additionalHeaders, appName })
/**
* 发送PATCH请求并返回一个解析为响应数据的Promise。
*
* @param appName - 应用名称,用于获取授权令牌。
* @returns 一个函数该函数接受URL、有效负载和附加头并返回一个解析为响应数据的Promise。
*/
larkNetTool.patch =
(appName?: string) =>
<T = LarkServer.BaseRes>(
url: string,
payload: any,
additionalHeaders?: any
): Promise<T> =>
larkNetTool({ url, method: "patch", payload, additionalHeaders, appName })
export default larkNetTool