diff --git a/packages/lark-msg-tool/src/larkCard/index.ts b/packages/lark-msg-tool/src/larkCard/index.ts index b9f61d0..320054c 100644 --- a/packages/lark-msg-tool/src/larkCard/index.ts +++ b/packages/lark-msg-tool/src/larkCard/index.ts @@ -1,4 +1,3 @@ -import logger from "@egg/logger" import _, { isObject } from "lodash" import { Logger } from "winston" @@ -26,14 +25,23 @@ class LarkCard< protected stringify: boolean protected logger: Logger - constructor( - funcName: string, - stringify: boolean, - requestId: string, - cardMap: TCardMap, - tempMap: TTempMap, - functionMap: TFunctionMap - ) { + constructor({ + funcName, + stringify = false, + requestId, + cardMap = {} as TCardMap, + tempMap = {} as TTempMap, + functionMap = {} as TFunctionMap, + logger, + }: { + funcName: string + stringify: boolean + requestId: string + cardMap?: TCardMap + tempMap?: TTempMap + functionMap?: TFunctionMap + logger: Logger + }) { this.stringify = stringify this.requestId = requestId this.funcName = funcName @@ -45,7 +53,7 @@ class LarkCard< ...cardMap, } this.tempMap = tempMap - this.logger = logger.child({ requestId }) + this.logger = logger } setFunction(funcName: string) { @@ -57,20 +65,23 @@ class LarkCard< } child(func: string, stringify?: boolean) { - return new LarkCard( - func, - stringify || this.stringify, - this.requestId, - this.cardMap, - this.tempMap, - this.functionMap - ) + return new LarkCard({ + funcName: func, + stringify: stringify || this.stringify, + requestId: this.requestId, + cardMap: this.cardMap, + tempMap: this.tempMap, + functionMap: this.functionMap, + logger: this.logger, + }) } genCard(cardKey: keyof TCardMap | object, variables: { [key: string]: any }) { const card = isObject(cardKey) ? cardKey : this.cardMap[cardKey] if (!card) { - this.logger.error(`Card ${String(cardKey)} not found`) + this.logger.error("卡片未找到", { + cardKey: String(cardKey), + }) throw new Error(`Card ${String(cardKey)} not found`) } const finalVariables: Record = { @@ -78,9 +89,10 @@ class LarkCard< requestId: this.requestId, ...this.functionMap[this.funcName], } - this.logger.debug( - `Card ${String(cardKey)} final variables: ${JSON.stringify(finalVariables)}` - ) + this.logger.debug("卡片最终变量", { + cardKey: String(cardKey), + variables: finalVariables, + }) const replaceVariables = (str: string): string => { const variablePattern = /\$\{(\w+)\}/g @@ -125,9 +137,10 @@ class LarkCard< const finalContent = injectVariables(content) - this.logger.debug( - `Card ${String(cardKey)} final content: ${JSON.stringify(finalContent)}` - ) + this.logger.debug("卡片最终内容", { + cardKey: String(cardKey), + content: finalContent, + }) return this.stringify ? JSON.stringify(finalContent) : finalContent } @@ -146,7 +159,9 @@ class LarkCard< genTempCard(tempKey: keyof TTempMap, variables: { [key: string]: any }) { const tempId = this.tempMap[tempKey] if (!tempId) { - this.logger.error(`Temp ${String(tempKey)} not found`) + this.logger.error("模板未找到", { + tempKey: String(tempKey), + }) throw new Error(`Temp ${String(tempKey)} not found`) } const finalVariables: Record = { @@ -154,9 +169,10 @@ class LarkCard< requestId: this.requestId, ...this.functionMap[this.funcName], } - this.logger.debug( - `Temp ${String(tempKey)} final variables: ${JSON.stringify(finalVariables)}` - ) + this.logger.debug("模板最终变量", { + tempKey: String(tempKey), + variables: finalVariables, + }) const content = { type: "template", data: { @@ -168,9 +184,10 @@ class LarkCard< template_variable: finalVariables, }, } - this.logger.debug( - `Temp ${String(tempKey)} final content: ${JSON.stringify(content)}` - ) + this.logger.debug("模板最终内容", { + tempKey: String(tempKey), + content, + }) return this.stringify ? JSON.stringify(content) : content } } diff --git a/packages/net-tool/src/gitlabServer/base.ts b/packages/net-tool/src/gitlabServer/base.ts index a654a9b..b79455c 100644 --- a/packages/net-tool/src/gitlabServer/base.ts +++ b/packages/net-tool/src/gitlabServer/base.ts @@ -1,14 +1,16 @@ +import { Logger } from "winston" + import NetToolBase from "../netTool/base" import type { Gitlab } from "../types" class GitlabBaseService extends NetToolBase { - public project_id: number = 0; - public merge_request_iid: number = 0; + public project_id: number = 0 + public merge_request_iid: number = 0 - constructor(baseUrl: string, authKey: string, requestId: string) { + constructor(baseUrl: string, authKey: string, logger: Logger) { super({ prefix: baseUrl, - requestId, + logger, headers: { "PRIVATE-TOKEN": authKey }, }) } diff --git a/packages/net-tool/src/gitlabServer/index.ts b/packages/net-tool/src/gitlabServer/index.ts index 73d1fbc..be3cec8 100644 --- a/packages/net-tool/src/gitlabServer/index.ts +++ b/packages/net-tool/src/gitlabServer/index.ts @@ -1,3 +1,5 @@ +import loggerIns from "@egg/logger" + import Badge from "./badge" import Commit from "./commit" import Discussions from "./discussions" @@ -23,26 +25,26 @@ class GitlabService { * 创建一个 GitLab 服务对象。 * @param {string} baseUrl - GitLab 服务器的 URL。 * @param {string} authKey - 用于授权的密钥。 - * @param {string} requestId - 请求 ID。 + * @param {string} logger - 日志记录器。 */ constructor({ baseUrl = "", authKey = "", - requestId = "", + logger = loggerIns, }: { baseUrl?: string authKey?: string - requestId?: string + logger?: any }) { - this.badge = new Badge(baseUrl, authKey, requestId) - this.commit = new Commit(baseUrl, authKey, requestId) - this.discussions = new Discussions(baseUrl, authKey, requestId) - this.mergeRequests = new MergeRequests(baseUrl, authKey, requestId) - this.notes = new Notes(baseUrl, authKey, requestId) - this.pipelines = new Pipelines(baseUrl, authKey, requestId) - this.project = new Project(baseUrl, authKey, requestId) - this.repository = new Repository(baseUrl, authKey, requestId) - this.hook = new Hook(baseUrl, authKey, requestId) + this.badge = new Badge(baseUrl, authKey, logger) + this.commit = new Commit(baseUrl, authKey, logger) + this.discussions = new Discussions(baseUrl, authKey, logger) + this.mergeRequests = new MergeRequests(baseUrl, authKey, logger) + this.notes = new Notes(baseUrl, authKey, logger) + this.pipelines = new Pipelines(baseUrl, authKey, logger) + this.project = new Project(baseUrl, authKey, logger) + this.repository = new Repository(baseUrl, authKey, logger) + this.hook = new Hook(baseUrl, authKey, logger) } /** diff --git a/packages/net-tool/src/larkServer/auth.ts b/packages/net-tool/src/larkServer/auth.ts index 04d7c68..1a57da5 100644 --- a/packages/net-tool/src/larkServer/auth.ts +++ b/packages/net-tool/src/larkServer/auth.ts @@ -1,3 +1,5 @@ +import { Logger } from "winston" + import NetToolBase, { NetError } from "../netTool/base" import { Lark } from "../types" export class LarkAuthService extends NetToolBase { @@ -7,18 +9,18 @@ export class LarkAuthService extends NetToolBase { constructor({ appId, appSecret, - requestId, + logger, }: { appId?: string appSecret?: string - requestId: string + logger?: Logger }) { super({ prefix: process.env.NODE_ENV === "production" ? "http://lark-auth.c5-cloudml.xiaomi.srv/lark_auth" : "http://lark-auth.staging-cloudml.xiaomi.srv/lark_auth", - requestId, + logger, }) this.appId = appId || process.env.LARK_APP_ID || "" this.appSecret = appSecret || process.env.LARK_APP_SECRET || "" diff --git a/packages/net-tool/src/larkServer/base.ts b/packages/net-tool/src/larkServer/base.ts index b3064d2..2f62a18 100644 --- a/packages/net-tool/src/larkServer/base.ts +++ b/packages/net-tool/src/larkServer/base.ts @@ -1,11 +1,12 @@ +import { Logger } from "winston" + import NetToolBase, { NetError } from "../netTool/base" - class LarkBaseService extends NetToolBase { - constructor(getToken: () => Promise, requestId: string) { + constructor(getToken: () => Promise, logger?: Logger) { super({ prefix: "https://open.f.mioffice.cn/open-apis", - requestId, + logger, getHeaders: async () => ({ Authorization: `Bearer ${await getToken()}`, }), @@ -26,6 +27,4 @@ class LarkBaseService extends NetToolBase { } } - - export default LarkBaseService diff --git a/packages/net-tool/src/larkServer/index.ts b/packages/net-tool/src/larkServer/index.ts index f2f6e5f..43cce8a 100644 --- a/packages/net-tool/src/larkServer/index.ts +++ b/packages/net-tool/src/larkServer/index.ts @@ -1,3 +1,5 @@ +import { Logger } from "winston" + import LarkAuthService from "./auth" import LarkChatService from "./chat" import LarkDriveService from "./drive" @@ -14,30 +16,28 @@ class LarkService { auth: LarkAuthService chat: LarkChatService wiki: LarkWikiService - requestId: string constructor({ appId, appSecret, - requestId, + logger, }: { appId?: string appSecret?: string - requestId: string + logger?: Logger }) { this.auth = new LarkAuthService({ appId, appSecret, - requestId, + logger, }) const getAppAuth = () => this.auth.getAppAuth() - this.drive = new LarkDriveService(getAppAuth, requestId) - this.message = new LarkMessageService(getAppAuth, requestId) - this.user = new LarkUserService(getAppAuth, requestId) - this.sheet = new LarkSheetService(getAppAuth, requestId) - this.chat = new LarkChatService(getAppAuth, requestId) - this.wiki = new LarkWikiService(getAppAuth, requestId) - this.requestId = requestId + this.drive = new LarkDriveService(getAppAuth, logger) + this.message = new LarkMessageService(getAppAuth, logger) + this.user = new LarkUserService(getAppAuth, logger) + this.sheet = new LarkSheetService(getAppAuth, logger) + this.chat = new LarkChatService(getAppAuth, logger) + this.wiki = new LarkWikiService(getAppAuth, logger) } } diff --git a/packages/net-tool/src/netTool/base.ts b/packages/net-tool/src/netTool/base.ts index de25ea1..2b4cc17 100644 --- a/packages/net-tool/src/netTool/base.ts +++ b/packages/net-tool/src/netTool/base.ts @@ -1,4 +1,4 @@ -import logger from "@egg/logger" +import loggerIns from "@egg/logger" import { Logger } from "winston" import { NetErrorDetail, NetRequestParams } from "../types" @@ -26,7 +26,6 @@ class NetToolBase { protected headers: Record protected getHeaders: () => Promise> protected logger: Logger - protected requestId: string /** * 创建一个网络工具类实例。 @@ -35,24 +34,23 @@ class NetToolBase { * @param {string} [params.prefix] - URL前缀。 * @param {Record} [params.headers] - 默认请求头。 * @param {Function} [params.getHeaders] - 获取请求头的方法。 - * @param {string} [params.requestId] - 请求ID。 + * @param {Logger} [params.logger] - 日志记录器。 */ constructor({ prefix, headers, getHeaders, - requestId, + logger, }: { prefix?: string headers?: Record getHeaders?: () => Promise> - requestId?: string + logger?: Logger } = {}) { this.prefix = prefix || "" this.headers = headers || {} this.getHeaders = getHeaders || (async () => ({})) - this.requestId = requestId || "" - this.logger = logger.child({ requestId }) + this.logger = logger || loggerIns } /** @@ -62,25 +60,25 @@ class NetToolBase { * @param {string} [params.prefix] - URL前缀。 * @param {Record} [params.headers] - 默认请求头。 * @param {Function} [params.getHeaders] - 获取请求头的方法。 - * @param {string} [params.requestId] - 请求ID。 + * @param {Logger} [params.logger] - 日志记录器。 * @returns 一个网络工具类实例。 */ child({ prefix, headers, getHeaders, - requestId, + logger, }: { prefix?: string headers?: Record getHeaders?: () => Promise> - requestId?: string + logger?: Logger } = {}) { return new NetToolBase({ prefix: prefix || this.prefix, headers: headers || this.headers, getHeaders: getHeaders || this.getHeaders, - requestId: requestId || this.requestId, + logger: logger || this.logger, }) } @@ -117,7 +115,7 @@ class NetToolBase { requestTime, responseTime: new Date().getTime(), } - this.logger.silly(JSON.stringify(responseLog, null, 2)) + this.logger.silly('') return responseLog } diff --git a/packages/net-tool/src/netTool/index.ts b/packages/net-tool/src/netTool/index.ts index 4212b4a..b4473c5 100644 --- a/packages/net-tool/src/netTool/index.ts +++ b/packages/net-tool/src/netTool/index.ts @@ -2,6 +2,35 @@ import { NetRequestParams } from "../types" import NetToolBase from "./base" class NetTool extends NetToolBase { + /** + * @description 请求ID + */ + private requestId: string + /** + * @description NetTool类的构造函数 + * @param {Object} params - 构造函数参数。 + * @param {string} [params.prefix] - URL前缀。 + * @param {Record} [params.headers] - 默认请求头。 + * @param {Function} [params.getHeaders] - 获取请求头的方法。 + * @param {Logger} [params.logger] - 日志记录器。 + * @param {string} params.requestId - 请求ID + */ + constructor({ + prefix, + headers, + getHeaders, + logger, + requestId, + }: { + prefix?: string + headers?: Record + getHeaders?: () => Promise> + logger?: any + requestId: string + }) { + super({ prefix, headers, getHeaders, logger }) + this.requestId = requestId + } public request({ url, method, diff --git a/packages/net-tool/src/types/gitlab.ts b/packages/net-tool/src/types/gitlab.ts index 1ca9ea6..422f37c 100644 --- a/packages/net-tool/src/types/gitlab.ts +++ b/packages/net-tool/src/types/gitlab.ts @@ -1,11 +1,4 @@ export namespace Gitlab { - export interface InitParams { - baseUrl: string - requestId: string - authKey: string - project_id?: number - merge_request_iid?: number - } /* 错误 */ export interface Error { /** diff --git a/test/lark.ts b/test/lark.ts index dd01754..5b50eb5 100644 --- a/test/lark.ts +++ b/test/lark.ts @@ -3,7 +3,6 @@ import { LarkService } from "../packages/net-tool/src/index" const larkService = new LarkService({ appId: "appId", appSecret: "appSecret", - requestId: "requestId", }) larkService.user