dna-api 0.2.7 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +563 -0
- package/dist/TimeBasicResponse.d.ts +16 -0
- package/dist/api.test.d.ts +1 -0
- package/dist/index.d.ts +250 -941
- package/dist/index.js +4 -4
- package/dist/index.js.map +16 -4
- package/dist/modules/base.d.ts +57 -0
- package/dist/modules/game.d.ts +14 -0
- package/dist/modules/h5.d.ts +99 -0
- package/dist/modules/home.d.ts +120 -0
- package/dist/modules/profile.d.ts +40 -0
- package/dist/modules/setting.d.ts +24 -0
- package/dist/modules/trend.d.ts +22 -0
- package/dist/modules/types.d.ts +14 -0
- package/dist/modules/user.d.ts +40 -0
- package/dist/modules/usergrowing.d.ts +30 -0
- package/dist/modules/utils.d.ts +36 -0
- package/dist/type-generated.d.ts +1611 -0
- package/package.json +53 -48
- package/build.ts +0 -10
- package/src/index.ts +0 -1736
- package/tsconfig.build.json +0 -109
package/dist/index.js.map
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["..\\src\\index.ts"],
|
|
3
|
+
"sources": ["..\\src\\TimeBasicResponse.ts", "..\\src\\modules\\utils.ts", "..\\src\\modules\\base.ts", "..\\src\\modules\\game.ts", "..\\src\\modules\\home.ts", "..\\src\\modules\\profile.ts", "..\\src\\modules\\setting.ts", "..\\src\\modules\\trend.ts", "..\\src\\modules\\user.ts", "..\\src\\modules\\usergrowing.ts", "..\\src\\modules\\h5.ts", "..\\src\\modules\\types.ts", "..\\src\\index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import * as forge from \"node-forge\"\n//#region const\nenum RespCode {\n ERROR = -999,\n OK_ZERO = 0,\n OK_HTTP = 200,\n BAD_REQUEST = 400,\n SERVER_ERROR = 500,\n}\n\nconst DNA_GAME_ID = 268\n//#endregion\n\n/**\n * DNA API类,用于与DNA游戏服务器交互\n */\nexport class DNAAPI {\n public fetchFn?: typeof fetch\n public is_h5 = false\n public RSA_PUBLIC_KEY =\n \"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGpdbezK+eknQZQzPOjp8mr/dP+QHwk8CRkQh6C6qFnfLH3tiyl0pnt3dePuFDnM1PUXGhCkQ157ePJCQgkDU2+mimDmXh0oLFn9zuWSp+U8uLSLX3t3PpJ8TmNCROfUDWvzdbnShqg7JfDmnrOJz49qd234W84nrfTHbzdqeigQIDAQAB\"\n public BASE_URL = \"https://dnabbs-api.yingxiong.com/\"\n private uploadKey: string = \"\"\n\n /**\n * 构造函数\n * @param dev_code 设备码\n * @param uid 用户ID\n * @param token 访问令牌\n * @param options 选项\n * @param options.fetchFn 自定义fetch函数\n * @param options.is_h5 是否为H5端\n * @param options.rsa_public_key RSA公钥(base64) 设为空字符串从服务器获取\n */\n constructor(\n public dev_code: string,\n public token = \"\",\n options: { fetchFn?: typeof fetch; is_h5?: boolean; rsa_public_key?: string } = {},\n ) {\n this.fetchFn = options.fetchFn\n if (options.is_h5 !== undefined) this.is_h5 = options.is_h5\n if (options.rsa_public_key !== undefined) this.RSA_PUBLIC_KEY = options.rsa_public_key\n }\n\n /**\n * 获取RSA公钥\n * @returns RSA公钥(base64)\n */\n async getRsaPublicKey() {\n if (this.RSA_PUBLIC_KEY) {\n return this.RSA_PUBLIC_KEY\n }\n const res = await this._dna_request<{ key: string }>(\"config/getRsaPublicKey\")\n\n if (res.is_success && res.data) {\n const key = res.data.key\n if (typeof key === \"string\") {\n this.RSA_PUBLIC_KEY = key\n }\n }\n return this.RSA_PUBLIC_KEY\n }\n\n /**\n * 登录\n */\n async login(mobile: string, code: string) {\n const data = { code: code, devCode: this.dev_code, gameList: DNA_GAME_ID, loginType: 1, mobile: mobile }\n const res = await this._dna_request<DNALoginRes>(\"user/sdkLogin\", data, { sign: true })\n if (res.is_success && res.data) {\n const data = res.data\n if (typeof data.token === \"string\") {\n this.token = data.token\n }\n }\n return res\n }\n\n /**\n * 获取短信验证码\n */\n async getSmsCode(mobile: string, vJson: string) {\n const data = { mobile, isCaptcha: 1, vJson }\n return await this._dna_request(\"user/getSmsCode\", data)\n }\n\n /**\n * 上传头像\n */\n async uploadHead(file: File) {\n const data = new FormData()\n data.append(\"parts\", file)\n const res = await this._dna_request<string[]>(\"user/img/uploadHead\", data, { sign: true })\n if (res.is_success && res.data) {\n res.data = res.data.map((url) => aesDecryptImageUrl(url, this.uploadKey))\n }\n return res\n }\n\n /**\n * 图片上传\n */\n async uploadImage(file: File) {\n const data = new FormData()\n data.append(\"files\", file)\n data.append(\"type\", \"post\")\n const res = await this._dna_request<string[]>(\"config/img/upload\", data, { sign: true })\n if (res.is_success && res.data) {\n res.data = res.data.map((url) => aesDecryptImageUrl(url, this.uploadKey))\n }\n return res\n }\n\n /**\n * 获取登录日志\n */\n async loginLog() {\n return await this._dna_request<DNALoginRes>(\"user/login/log\")\n }\n\n /**\n * 获取角色列表\n */\n async getRoleList() {\n return await this._dna_request<DNARoleListRes>(\"role/list\")\n }\n\n /**\n * 获取默认角色\n */\n async getDefaultRoleForTool() {\n const data = { type: 1 }\n return await this._dna_request<DNARoleForToolRes>(\"role/defaultRoleForTool\", data, { sign: true, token: true, tokenSig: true })\n }\n\n /**\n * 获取角色详情\n */\n async getCharDetail(char_id: string, char_eid: string, otherUserId?: string) {\n const data = { charId: char_id, charEid: char_eid, type: 1, otherUserId } as any\n return await this._dna_request<DNACharDetailRes>(\"role/getCharDetail\", data)\n }\n\n /**\n * 获取武器详情\n */\n async getWeaponDetail(weapon_id: string, weapon_eid: string, otherUserId?: string) {\n const data = { weaponId: weapon_id, weaponEid: weapon_eid, type: 1, otherUserId }\n return await this._dna_request<DNAWeaponDetailRes>(\"role/getWeaponDetail\", data)\n }\n\n /**\n * 获取角色简讯\n */\n async getShortNoteInfo() {\n return await this._dna_request<DNARoleShortNoteRes>(\"role/getShortNoteInfo\")\n }\n\n /**\n * 检查是否签到\n */\n async haveSignIn() {\n const data = { gameId: DNA_GAME_ID }\n return await this._dna_request<DNAHaveSignInRes>(\"user/haveSignInNew\", data)\n }\n\n /**\n * 签到日历\n */\n async signCalendar() {\n const data = { gameId: DNA_GAME_ID }\n return await this._dna_request<DNACalendarSignRes>(\"encourage/signin/show\", data)\n }\n\n /** ? */\n async soulTask() {\n return await this._dna_request(\"role/soul/task\")\n }\n\n /**\n * 游戏签到\n */\n async gameSign(day_award_id: number, period: number) {\n const data = {\n dayAwardId: day_award_id,\n periodId: period,\n signinType: 1,\n }\n return await this._dna_request(\"encourage/signin/signin\", data)\n }\n\n /**\n * 皎皎角签到\n */\n async bbsSign() {\n const data = { gameId: DNA_GAME_ID }\n return await this._dna_request(\"user/signIn\", data)\n }\n\n /**\n * 获取任务进度\n */\n async getTaskProcess() {\n const data = { gameId: DNA_GAME_ID }\n return await this._dna_request<DNATaskProcessRes>(\"encourage/level/getTaskProcess\", data)\n }\n\n /**\n * 获取帖子列表\n * @param forumId 论坛ID\n * @param pageIndex 页码\n * @param pageSize 每页数量\n * @param searchType 搜索类型 1:最新 2:热门\n * @param timeType 时间类型 0:全部 1:今日 2:本周 3:本月\n * @returns 帖子列表\n */\n async getPostList(forumId: number = 48, pageIndex: number = 1, pageSize: number = 20, searchType: number = 1, timeType: number = 0) {\n const data = {\n forumId: forumId,\n gameId: DNA_GAME_ID,\n pageIndex: pageIndex,\n pageSize: pageSize,\n searchType: searchType, // 1:最新 2:热门\n timeType: timeType, // 0:全部 1:今日 2:本周 3:本月\n }\n return await this._dna_request<DNAPostListRes>(\"forum/list\", data)\n }\n\n /** 管理员锁定帖子 */\n async lockPost(post: { postId: number; gameId?: number; gameForumId: number; operateType: number }) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n operateType: post.operateType,\n }\n return await this._dna_request(\"forum/moderator/postLock\", data)\n }\n\n /** 管理员移动帖子 */\n async postDownOrUp(post: { postId: number; gameId?: number; gameForumId: number; operateType: number }) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n operateType: post.operateType,\n }\n return await this._dna_request(\"forum/moderator/postDownOrUp\", data)\n }\n\n /** 管理员设精 */\n async postElite(post: { postId: number; gameId?: number; gameForumId: number; operateType: number }) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n operateType: post.operateType,\n }\n return await this._dna_request(\"forum/moderator/postElite\", data)\n }\n\n /** 管理员隐藏帖子 */\n async postHide(post: { postId: number; gameId?: number; gameForumId: number; operateType: number }) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n operateType: post.operateType,\n }\n return await this._dna_request(\"forum/moderator/postHide\", data)\n }\n\n /** 管理员设置权重 */\n async reRank(post: { postId: number; gameId?: number; gameForumId: number }, weight: number) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n weight: weight,\n }\n return await this._dna_request(\"forum/moderator/reRank\", data)\n }\n\n /** 管理员设置强推 */\n async strongRecommend(post: { postId: number; gameId?: number; gameForumId: number }, operateType = 1) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n operateType: operateType,\n }\n return await this._dna_request(\"forum/moderator/setForceRecommend\", data)\n }\n\n /** 管理员删帖 */\n async adminDelete(post: { postId: number; gameId?: number; gameForumId: number }, content: string, reasonCode: number) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n content: content,\n reasonCode: reasonCode,\n }\n return await this._dna_request(\"forum/moderator/postDelete\", data)\n }\n /** 管理员移动帖子 */\n async adminMovePost(\n post: { postId: number; gameId?: number; gameForumId: number },\n newGameId: number,\n newForumId: number,\n newTopicIdStr: string,\n ) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n newGameId: newGameId,\n newForumId: newForumId,\n newTopicIdStr: newTopicIdStr,\n }\n return await this._dna_request(\"forum/moderator/postMove\", data)\n }\n /** ? */\n async adminRefreshTime(post: { postId: number; gameId?: number; gameForumId: number }, refresh: number) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n refresh: refresh,\n }\n return await this._dna_request(\"forum/moderator/setRefresh\", data)\n }\n\n /** 黑名单 */\n async blockList() {\n return await this._dna_request(\"user/block/list\")\n }\n\n /** 拉黑 */\n async blockOther(blockPostId: number, blockUserId: string, type: number) {\n const data = {\n blockPostId: blockPostId,\n blockUserId: blockUserId,\n type: type,\n }\n return await this._dna_request(\"user/block/list\", data)\n }\n\n /** ? */\n async viewCommunity() {\n return await this._dna_request(\"encourage/level/viewCommunity\")\n }\n\n /** ? */\n async viewCount() {\n return await this._dna_request(\"forum/viewCount\")\n }\n\n /** ? */\n async receiveLog(periodId: number, pageIndex: number, pageSize: number) {\n const data = {\n periodId: periodId,\n pageIndex: pageIndex,\n pageSize: pageSize,\n }\n return await this._dna_request(\"encourage/signin/receiveLog\", data)\n }\n\n /** 收藏 */\n async collect(postId: number, toUserId: string, operateType = 1) {\n const data = {\n operateType: operateType,\n postId: postId,\n toUserId: toUserId,\n }\n return await this._dna_request(\"forum/collect\", data)\n }\n\n /** 删除评论 */\n async commentDelete(\n comment: { id: number; gameId: number; gameForumId: number },\n entityType: number,\n content: string,\n reasonCode: number,\n ) {\n const data = {\n id: comment.id,\n gameId: comment.gameId,\n gameForumId: comment.gameForumId,\n entityType: entityType,\n content: content,\n reasonCode: reasonCode,\n }\n return await this._dna_request(\"forum/collect\", data)\n }\n\n /** 推荐列表 */\n async recommendList(recIndex: number, newIndex: number, size: number, history: number, gameId = DNA_GAME_ID) {\n const data = {\n gameId: gameId,\n recIndex: recIndex,\n newIndex: newIndex,\n size: size,\n history: history,\n }\n return await this._dna_request(\"forum/recommend/list\", data)\n }\n\n /** 举报 */\n async report(\n { commentId = 0, postId = 0, replyId = 0 }: { commentId?: number; postId?: number; replyId?: number },\n reportReason = 1,\n reportType = 1,\n ) {\n const data = {\n commentId: commentId,\n postId: postId,\n replyId: replyId,\n reportReason: reportReason,\n reportType: reportType,\n }\n return await this._dna_request<DNAPostListRes>(\"forum/recommend/list\", data)\n }\n /** 搜索帖子 */\n async searchPost(keyword: number, pageIndex: number, pageSize: number, gameId = DNA_GAME_ID, searchType = 1) {\n const data = {\n gameId: gameId,\n keyword: keyword,\n pageIndex: pageIndex,\n pageSize: pageSize,\n searchType: searchType,\n }\n return await this._dna_request<DNAPostListRes>(\"forum/searchPost\", data)\n }\n /** 搜索帖子 */\n async searchTopic(keyword: number, pageIndex: number, pageSize = 20, gameId = DNA_GAME_ID) {\n const data = {\n gameId: gameId,\n keyword: keyword,\n pageIndex: pageIndex,\n pageSize: pageSize,\n }\n return await this._dna_request<DNAPostListRes>(\"config/searchTopic\", data)\n }\n\n /** 搜索帖子 */\n async searchUser(keyword: number, pageIndex: number, pageSize: number) {\n const data = {\n keyword: keyword,\n pageIndex: pageIndex,\n pageSize: pageSize,\n }\n return await this._dna_request<DNAPostListRes>(\"user/searchUser\", data)\n }\n\n /**\n * 获取帖子列表\n * @param topicId 主题ID\n * @param pageIndex 页码\n * @param pageSize 每页数量\n * @param searchType 搜索类型 1:最新 2:热门\n * @param timeType 时间类型 0:全部 1:今日 2:本周 3:本月\n * @returns 帖子列表\n */\n async getPostsByTopic(\n topicId: number = 177,\n pageIndex: number = 1,\n pageSize: number = 20,\n searchType: number = 1,\n timeType: number = 0,\n ) {\n const data = {\n topicId: topicId,\n gameId: DNA_GAME_ID,\n pageIndex: pageIndex,\n pageSize: pageSize,\n searchType: searchType, // 1:最新 2:热门\n timeType: timeType, // 0:全部 1:今日 2:本周 3:本月\n }\n return await this._dna_request<DNAPostListRes>(\"forum/getPostByTopic\", data)\n }\n\n /**\n * 获取帖子详情\n * @param post_id 帖子ID\n * @returns 帖子详情\n */\n async getPostDetail(post_id: string) {\n const data = { postId: post_id }\n return await this._dna_request<DNAPostDetailRes>(\"forum/getPostDetail\", data)\n }\n\n /** 关注用户 */\n async doFollow(userId: string, unfollow?: boolean) {\n const data = {\n followUserId: userId,\n operateType: unfollow ? 0 : 1,\n }\n return await this._dna_request(\"user/followUser\", data, { sign: true })\n }\n\n /** 获取关注状态 */\n async getFollowState(userId: string) {\n const data = {\n followUserId: userId,\n }\n return await this._dna_request(\"user/isFollow\", data)\n }\n\n /**\n * 点赞帖子\n */\n async doLike(post: { gameForumId: string; postId: string; postType: string; userId: string }) {\n const data = {\n forumId: post.gameForumId,\n gameId: DNA_GAME_ID,\n likeType: \"1\",\n operateType: \"1\",\n postCommentId: \"\",\n postCommentReplyId: \"\",\n postId: post.postId,\n postType: post.postType,\n toUserId: post.userId,\n }\n return await this._dna_request(\"forum/like\", data)\n }\n\n /** 分享帖子 */\n async doShare() {\n const data = { gameId: DNA_GAME_ID }\n return await this._dna_request(\"encourage/level/shareTask\", data)\n }\n\n /** 回复帖子 */\n async createComment(post: { userId: string; postId: string; gameForumId: number }, content: string) {\n const content_json = JSON.stringify([\n {\n content,\n contentType: \"1\",\n // imgHeight: 0,\n // imgWidth: 0,\n // url: \"\",\n },\n ])\n const data = {\n postId: post.postId,\n forumId: post.gameForumId,\n postType: \"1\",\n content: content_json,\n }\n\n return await this._dna_request(\"forum/comment/createComment\", data, {\n sign: true,\n params: { toUserId: post.userId },\n })\n }\n\n /** 回复评论 */\n async createReply(post: { userId: string; postId: string; postCommentId: string; gameForumId: number }, content: string) {\n const content_json = JSON.stringify([\n {\n content,\n contentType: \"1\",\n imgHeight: 0,\n imgWidth: 0,\n url: \"\",\n },\n ])\n const data = {\n content: content_json,\n forumId: post.gameForumId,\n postCommentId: post.postCommentId,\n postId: post.postId,\n postType: \"1\",\n toUserId: post.userId,\n }\n\n return await this._dna_request(\"forum/comment/createReply\", data, { sign: true, refer: true, params: { toUserId: post.userId } })\n }\n\n /** 回复评论的评论 */\n async createReplyList(\n post: { userId: string; postId: string; postCommentId: string; postCommentReplyId: string; gameForumId: number },\n content: string,\n ) {\n const content_json = JSON.stringify([\n {\n content,\n contentType: \"1\",\n imgHeight: 0,\n imgWidth: 0,\n url: \"\",\n },\n ])\n const data = {\n content: content_json,\n forumId: post.gameForumId,\n postCommentId: post.postCommentId,\n postCommentReplyId: post.postCommentReplyId,\n postId: post.postId,\n postType: \"1\",\n toUserId: post.userId,\n }\n return await this._dna_request(\"forum/comment/createReply\", data, { sign: true, refer: true, params: { toUserId: post.userId } })\n }\n\n /** 删 */\n async deletePost(deleteType: number, id: number) {\n return await this._dna_request(\"forum/more/delete\", { deleteType, id }, { sign: true, refer: true })\n }\n\n /**\n * 获取用户信息\n * @returns 用户信息\n */\n async getOtherMine(userId = \"709542994134436647\") {\n const data = {\n otherUserId: userId,\n searchType: 1,\n type: 2,\n }\n return await this._dna_request<DNAMineRes>(\"user/mine\", data)\n }\n\n /**\n * 获取用户信息\n * @returns 用户信息\n */\n async getMine() {\n return await this._dna_request<DNAMineRes>(\"user/mine\")\n }\n\n async getGameConfig() {\n const data = { gameId: DNA_GAME_ID }\n return await this._dna_request<DNAGameConfigRes[]>(\"config/getGameConfig\", data)\n }\n\n async getHeaders(options?: {\n payload?: Record<string, any> | string | FormData\n exparams?: Record<string, any>\n dev_code?: string\n refer?: boolean\n token?: string\n tokenSig?: boolean\n }) {\n let { payload, exparams, dev_code = this.dev_code, refer, token = this.token, tokenSig } = options || {}\n\n const CONTENT_TYPE = \"application/x-www-form-urlencoded; charset=utf-8\"\n const iosBaseHeader = {\n version: \"1.1.3\",\n source: \"ios\",\n \"Content-Type\": CONTENT_TYPE,\n \"User-Agent\": \"DoubleHelix/4 CFNetwork/3860.100.1 Darwin/25.0.0\",\n }\n const h5BaseHeader = {\n version: \"3.11.0\",\n source: \"h5\",\n \"Content-Type\": CONTENT_TYPE,\n \"User-Agent\":\n \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36\",\n }\n // 默认获取ios头\n const headers = { ...(this.is_h5 ? h5BaseHeader : iosBaseHeader) } as Record<string, any>\n if (dev_code) {\n headers.devCode = dev_code\n }\n if (refer) {\n headers.origin = \"https://dnabbs.yingxiong.com\"\n headers.refer = \"https://dnabbs.yingxiong.com/\"\n }\n if (token) {\n headers.token = token\n }\n if (payload instanceof FormData) {\n const pk = await this.getRsaPublicKey()\n const { signature, key } = build_upload_signature(pk)\n headers.t = signature\n this.uploadKey = key\n\n if (exparams) {\n for (const [key, value] of Object.entries(exparams)) {\n payload.append(key, String(value))\n }\n }\n\n delete headers[\"Content-Type\"]\n } else if (typeof payload === \"object\") {\n const si = build_signature(payload, tokenSig ? token : \"\")\n Object.assign(payload, { sign: si.s, timestamp: si.t })\n if (exparams) {\n Object.assign(payload, exparams)\n }\n\n const params = new URLSearchParams()\n Object.entries(payload).forEach(([key, value]) => {\n params.append(key, String(value))\n })\n payload = params.toString()\n\n const rk = si.k\n const pk = await this.getRsaPublicKey()\n const ek = rsa_encrypt(rk, pk)\n if (this.is_h5) {\n headers.k = ek\n } else {\n headers.rk = rk\n headers.key = ek\n }\n }\n return { headers, payload }\n }\n\n private async _dna_request<T = any>(\n url: string,\n data?: any,\n options?: {\n method?: \"GET\" | \"POST\"\n sign?: boolean\n file?: File\n tokenSig?: boolean\n token?: boolean\n refer?: boolean\n params?: Record<string, any>\n max_retries?: number\n retry_delay?: number\n timeout?: number\n },\n ): Promise<DNAApiResponse<T>> {\n let { method = \"POST\", sign, refer, params, max_retries = 3, retry_delay = 1, timeout = 10000, token, tokenSig } = options || {}\n let headers: Record<string, any>\n if (sign) {\n const { payload: p, headers: h } = await this.getHeaders({\n payload: data,\n refer,\n exparams: params,\n token: token ? this.token : undefined,\n tokenSig,\n })\n data = p\n headers = h\n } else {\n const { headers: h } = await this.getHeaders({ token: token ? this.token : undefined })\n headers = h\n }\n\n for (let attempt = 0; attempt < max_retries; attempt++) {\n try {\n let body: string | FormData | undefined = data\n if (data && typeof data === \"object\" && !(data instanceof FormData)) {\n const p = new URLSearchParams()\n Object.entries(data).forEach(([key, value]) => {\n if (value !== undefined) p.append(key, String(value))\n })\n body = p.toString()\n }\n const fetchOptions: RequestInit = {\n method,\n headers,\n body,\n }\n\n // 实现超时控制\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), timeout)\n\n const initOptions = {\n ...fetchOptions,\n signal: controller.signal,\n }\n const response = this.fetchFn\n ? await this.fetchFn(`${this.BASE_URL}${url}`, initOptions)\n : await fetch(`${this.BASE_URL}${url}`, initOptions)\n clearTimeout(timeoutId)\n\n // 获取响应头的 content-type\n const contentType = response.headers.get(\"content-type\") || \"\"\n let raw_res: any\n\n // 根据 content-type 处理响应数据\n if (contentType.includes(\"text/\")) {\n const textData = await response.text()\n raw_res = {\n code: RespCode.ERROR,\n data: textData,\n }\n } else {\n raw_res = await response.json()\n }\n\n if (typeof raw_res === \"object\" && raw_res !== null) {\n try {\n if (typeof raw_res.data === \"string\") {\n raw_res.data = JSON.parse(raw_res.data)\n }\n } catch (e) {\n // 忽略解析错误\n }\n }\n\n return new DNAApiResponse<T>(raw_res)\n } catch (e) {\n console.error(`请求失败: ${(e as Error).message}`)\n if (attempt < max_retries - 1) {\n await new Promise((resolve) => setTimeout(resolve, retry_delay * Math.pow(2, attempt)))\n }\n }\n }\n\n return DNAApiResponse.err(\"请求服务器失败,已达最大重试次数\")\n }\n}\n\nenum DNAInstanceMHType {\n \"角色\" = \"role\",\n \"武器\" = \"weapon\",\n \"魔之楔\" = \"mzx\",\n \"role\" = \"角色\",\n \"weapon\" = \"武器\",\n \"mzx\" = \"魔之楔\",\n}\n\nexport function getDNAInstanceMHType(key: keyof typeof DNAInstanceMHType) {\n return DNAInstanceMHType[key]\n}\n\n//#region 接口定义\n\nexport interface DNAMineRes {\n mine: DNAMine\n postList: DNAPost[]\n hasNext: number\n}\n\nexport interface DNAMine {\n /** 文章数量 */\n articleCount: number\n /** 收藏数量 */\n collectCount: number\n /** 评论数量 */\n commentCount: number\n /** 粉丝数量 */\n fansCount: number\n /** 新粉丝数量 */\n fansNewCount: number\n /** 关注数量 */\n followCount: number\n /** 性别 */\n gender: number\n /** 精华数量 */\n goldNum: number\n /** 头像 */\n headUrl: string\n /** 是否关注 */\n isFollow: number\n /** 是否登录用户 */\n isLoginUser: number\n /** 是否被禁言 */\n isMute: number\n /** 等级 */\n levelTotal: number\n /** 点赞数量 */\n likeCount: number\n /** 手机号 */\n mobile: string\n /** 管理员列表 */\n moderatorVos: any[]\n /** 帖子数量 */\n postCount: number\n /** 注册时间 */\n registerTime: string\n /** 状态 */\n status: number\n /** 趋势数量 */\n trendCount: number\n /** 用户ID */\n userId: string\n /** 用户名 */\n userName: string\n}\n\nexport interface DNAGameConfigRes {\n /** 游戏所有板块列表 */\n gameAllForumList: GameForum[]\n /** 游戏ID */\n gameId: number\n /** 游戏板块图片列表 */\n gameForumPictureList: any[]\n /** 游戏板块列表 */\n gameForumList: GameForum[]\n /** 签到按钮图片 */\n signBtn: string\n sort: number\n /** 话题列表 */\n topicList: GameTopic[]\n /** 背景图片 */\n drawBackgroundUrl: string\n /** 是否默认游戏 */\n gameDefault: number\n /** 签到颜色 */\n signColor: string\n /** 游戏名称 */\n gameName: string\n /** CM图片2 意味不明 */\n drawListUrl: string\n /** 英文站点 */\n configTab: ConfigTab[]\n}\n\nexport interface ConfigTab {\n name: string\n url: string\n}\n\nexport interface GameTopic {\n /** 话题背景图片 */\n backgroundUrl: string\n gameId: number\n /** 话题图标 */\n topicIconUrl: string\n topicId: number\n /** 话题名称 */\n topicName: string\n sort: number\n /** 话题描述 */\n topicDesc: string\n}\n\nexport interface GameForum {\n /** 全部=1 普通=3 */\n forumDataType: number\n /** 固定1 */\n forumUiType: number\n /** 小红点 */\n isTrend: number\n /** 夜间模式图标 */\n iconWhiteUrl: string\n /** 固定1 */\n forumType: number\n /** 板块名称 */\n name: string\n forumListShowType: number\n /** 图标 */\n iconUrl: string\n id: number\n sort: number\n /** 官方 */\n isOfficial: number\n}\n\nexport interface UserGame {\n gameId: number // gameId\n gameName: string // gameName\n}\n\nexport interface DNALoginRes {\n applyCancel?: number // applyCancel\n gender?: number // gender\n signature?: string // signature\n headUrl: string // headUrl\n userName: string // userName\n userId: string // userId\n isOfficial: number // isOfficial\n token: string // token\n userGameList: UserGame[] // userGameList\n isRegister: number // isRegister\n status: number // status\n /** 是否完成绑定 0: 未绑定, 1: 已绑定 */\n isComplete: number\n refreshToken: string // refreshToken\n}\n\nexport interface DNARoleShowVo {\n roleId: string // roleId\n headUrl?: string // headUrl\n level?: number // level\n roleName?: string // roleName\n isDefault?: number // isDefault\n roleRegisterTime?: string // roleRegisterTime\n boundType?: number // boundType\n roleBoundId: string // roleBoundId\n}\n\nexport interface DNARole {\n gameName: string // gameName\n showVoList: DNARoleShowVo[] // showVoList\n gameId: number // gameId\n}\n\nexport interface DNARoleListRes {\n roles: DNARole[] // roles\n}\n\n/** 密函 */\nexport interface DNARoleForToolInstance {\n id: number\n /** 中文 */\n name: string\n /** 密函编码 */\n code: string\n /** 固定0 */\n on: number\n}\n\nexport interface DNARoleForToolInstanceInfo {\n /** 密函列表 */\n instances: DNARoleForToolInstance[] // instances\n}\n\nexport interface DraftDoingInfo {\n draftCompleteNum: number // draftCompleteNum\n draftDoingNum: number // draftDoingNum\n /** 结束时间 */\n endTime: string\n /** 产品id */\n productId?: number\n /** 产品名称 */\n productName: string\n /** 开始时间 */\n startTime: string\n}\n\nexport interface DraftInfo {\n /** 正在做的锻造 */\n draftDoingInfo?: DraftDoingInfo[]\n /** 正在做的锻造数量 */\n draftDoingNum: number\n /** 最大锻造数量 */\n draftMaxNum: number\n}\n\nexport interface DNARoleShortNoteRes {\n /** 迷津进度 */\n rougeLikeRewardCount: number\n /** 迷津总数 */\n rougeLikeRewardTotal: number\n /** 备忘手记进度 */\n currentTaskProgress: number\n /** 备忘手记总数 */\n maxDailyTaskProgress: number\n /** 梦魇进度 */\n hardBossRewardCount: number\n /** 梦魇总数 */\n hardBossRewardTotal: number\n /** 锻造信息 */\n draftInfo: DraftInfo\n}\n\nexport interface DNARoleWeapon {\n weaponId: number\n weaponEid: string\n /** 武器类型图标 */\n elementIcon: string\n /** 武器图标 */\n icon: string\n /** 武器等级 */\n level: number\n /** 武器名称 */\n name: string\n /** 精炼等级 */\n skillLevel: number\n /** 是否解锁 */\n unLocked: boolean\n}\n\nexport interface DNARoleChar {\n charId: number\n charEid: string\n /** 元素图标 */\n elementIcon: string\n /** 命座等级 */\n gradeLevel: number\n /** 角色图标 */\n icon: string\n /** 角色等级 */\n level: number\n /** 角色名称 */\n name: string\n /** 是否解锁 */\n unLocked: boolean\n}\n\nexport interface DNARoleForToolRes {\n /** 角色信息 */\n roleInfo: DNARoleInfo\n /** 密函 */\n instanceInfo: DNARoleForToolInstanceInfo[]\n}\n\nexport interface DNARoleShow {\n /** 角色列表 */\n roleChars: DNARoleChar[]\n /** 武器列表 */\n langRangeWeapons: DNARoleWeapon[]\n /** 武器列表 */\n closeWeapons: DNARoleWeapon[]\n /** 角色头像 */\n headUrl: string\n /** 等级 */\n level: number\n /** 成就列表 */\n params: DNARoleAchievement[]\n /** 角色id */\n roleId: string\n /** 角色名称 */\n roleName: string\n /** 迷津 */\n rougeLikeInfo: DNARougeLikeInfo\n}\n\nexport interface DNARoleAchievement {\n paramKey: string // paramKey\n paramValue: string // paramValue\n}\n\nexport interface DNARoleInfo {\n /** 深渊信息 */\n abyssInfo: DNAAbyssInfo\n /** 角色信息 */\n roleShow: DNARoleShow\n}\n\nexport interface DNARougeLikeInfo {\n /** 最大通过等级 */\n maxPassed: number\n /** 最大通过等级名称 */\n maxPassedName: string\n /** 重置时间 */\n resetTime: string\n /** 奖励数量 */\n rewardCount: number\n /** 奖励总数 */\n rewardTotal: number\n /** 天赋信息 */\n talentInfo: DNARougeLikeTalentInfo[]\n}\n\nexport interface DNARougeLikeTalentInfo {\n cur: string\n max: string\n}\n\nexport interface DNAAbyssInfo {\n /** 阵容 */\n bestTimeVo1: DNABestTimeVo1\n /** 结束时间 */\n endTime: string\n /** 操作名称 */\n operaName: string\n /** 进度名称 */\n progressName: string\n /** 星级 */\n stars: string\n /** 开始时间 */\n startTime: string\n}\n\n/** 深渊阵容 */\nexport interface DNABestTimeVo1 {\n /** 角色图标 */\n charIcon: string\n /** 近战武器图标 */\n closeWeaponIcon: string\n /** 远程武器图标 */\n langRangeWeaponIcon: string\n /** 魔灵图标 */\n petIcon: string\n /** 协战角色图标1 */\n phantomCharIcon1: string\n /** 协战武器图标1 */\n phantomWeaponIcon1: string\n /** 协战角色图标2 */\n phantomCharIcon2: string\n /** 协战武器图标2 */\n phantomWeaponIcon2: string\n}\n\n/** 角色属性 */\nexport interface DNACharAttribute {\n /** 技能范围 */\n skillRange: string\n /** 强化值 */\n strongValue: string\n /** 技能威力 */\n skillIntensity: string\n /** 武器精通 */\n weaponTags: string[]\n /** 防御 */\n def: number\n /** 仇恨值 */\n enmityValue: string\n /** 技能效益 */\n skillEfficiency: string\n /** 技能耐久 */\n skillSustain: string\n /** 最大生命值 */\n maxHp: number\n /** 攻击 */\n atk: number\n /** 最大护盾 */\n maxES: number\n /** 最大神志 */\n maxSp: number\n}\n\n/** 角色技能 */\nexport interface DNARoleSkill {\n /** 技能id */\n skillId: number\n /** 技能图标 */\n icon: string\n /** 技能等级 */\n level: number\n /** 技能名称 */\n skillName: string\n}\n\n/** 溯源 */\nexport interface DNARoleTrace {\n /** 溯源图标 */\n icon: string\n /** 溯源描述 */\n description: string\n}\n\n/** 魔之楔 */\nexport interface DNARoleMod {\n /** id 没佩戴为-1 */\n id: number\n /** 图标 */\n icon?: string\n /** 质量 */\n quality?: number\n /** 名称 */\n name?: string\n}\n\nexport interface DNACharDetail {\n charId: number\n /** 角色属性 */\n attribute: DNACharAttribute\n /** 角色技能 */\n skills: DNARoleSkill[]\n /** 立绘 */\n paint: string\n /** 角色名称 */\n charName: string\n /** 元素图标 */\n elementIcon: string\n /** 溯源 */\n traces: DNARoleTrace[]\n /** 当前魔之楔 */\n currentVolume: number\n /** 最大魔之楔 */\n sumVolume: number\n /** 角色等级 */\n level: number\n /** 角色头像 */\n icon: string\n /** 溯源等级 0-6 */\n gradeLevel: number\n /** 元素名称 */\n elementName: string\n /** 魔之楔列表 */\n modes: DNARoleMod[]\n}\n\nexport interface DNACharDetailRes {\n /** 角色详情 */\n charDetail: DNACharDetail\n}\n\nexport interface DNAWeaponDetailRes {\n /** 武器详情 */\n weaponDetail: DNAWeaponDetail\n}\n\nexport interface DNAWeaponDetail {\n attribute: DNAWeaponAttribute\n currentVolume: number\n description: string\n elementIcon: string\n elementName: string\n icon: string\n id: number\n level: number\n modes: DNARoleMod[]\n name: string\n skillLevel: number\n sumVolume: number\n}\n\nexport interface DNAWeaponAttribute {\n atk: number\n crd: number\n cri: number\n speed: number\n trigger: number\n}\n\nexport interface DNADayAward {\n gameId: number // gameId\n periodId: number // periodId\n iconUrl: string // iconUrl\n id: number // id\n dayInPeriod: number // dayInPeriod\n updateTime: number // updateTime\n awardNum: number // awardNum\n thirdProductId: string // thirdProductId\n createTime: number // createTime\n awardName: string // awardName\n}\n\nexport interface DNACaSignPeriod {\n gameId: number // gameId\n retryCos: number // retryCos\n endDate: number // endDate\n id: number // id\n startDate: number // startDate\n retryTimes: number // retryTimes\n overDays: number // overDays\n createTime: number // createTime\n name: string // name\n}\n\nexport interface DNACaSignRoleInfo {\n headUrl: string // headUrl\n roleId: string // roleId\n roleName: string // roleName\n level: number // level\n roleBoundId: string // roleBoundId\n}\n\nexport interface DNAHaveSignInRes {\n /** 已签到天数 */\n totalSignInDay: number\n}\n\nexport interface DNACalendarSignRes {\n todaySignin: boolean // todaySignin\n userGoldNum: number // userGoldNum\n dayAward: DNADayAward[] // dayAward\n signinTime: number // signinTime\n period: DNACaSignPeriod // period\n roleInfo: DNACaSignRoleInfo // roleInfo\n}\n\nexport interface DNABBSTask {\n /** 备注 */\n remark: string\n /** 完成次数 */\n completeTimes: number\n /** 需要次数 */\n times: number\n /** skipType */\n skipType: number\n /** 获取经验 */\n gainExp: number\n /** 进度 */\n process: number\n /** 获取金币 */\n gainGold: number\n /** 任务标识名 */\n markName?: string\n}\n\nexport interface DNATaskProcessRes {\n dailyTask: DNABBSTask[] // dailyTask\n}\n\nexport interface DNATopicPostListRes {\n postList: DNAPost[]\n topic: DNATopicDetail\n hasNext: number\n}\n\nexport interface DNATopicDetail {\n backgroundUrl: string\n gameId: number\n sort: number\n topicDesc: string\n topicIconUrl: string\n topicId: number\n topicName: string\n}\n\nexport interface DNAPost {\n browseCount: string\n collectionCount: number\n commentCount: number\n gameForumId: number\n gameId: number\n gameName: string\n imgContent: DNAPostImgContent[]\n imgCount: number\n isCollect: number\n isCreator: number\n isElite: number\n isFollow: number\n isLike: number\n isLock: number\n isOfficial: number\n isPublisher: number\n likeCount: number\n postContent: string\n postCover: string\n postCoverVo: DNAPostCoverVo\n postId: string\n postStatus: number\n postTitle: string\n postType: number\n showTime: string\n topics: DNATopicShort[]\n userHeadUrl: string\n userId: string\n userLevel: number\n userModeratorIdentity: number\n userName: string\n}\n\nexport interface DNATopicShort {\n topicId: number\n topicName: string\n}\n\nexport interface DNAPostCoverVo {\n imgHeight: number\n imgWidth: number\n}\n\nexport interface DNAPostImgContent {\n imgHeight: number\n imgWidth: number\n url: string\n isAbnormal?: boolean\n}\n\nexport interface DNAPostListRes {\n postList: DNAPost[] // posts\n topList: any[]\n hasNext: number\n}\n\nexport interface DNAPostDetailRes {\n isHotCount: boolean\n gameId: number\n isFollow: number\n isLike: number\n postDetail: DNAPostDetail\n isCollect: number\n hasNext: number\n comment: DNAComment[]\n}\n\nexport interface DNAPostDetail {\n auditStatus: number\n browseCount: string\n checkStatus: number\n collectionCount: number\n commentCount: number\n gameForumId: number\n gameForumVo: DNAGameForumVo\n gameId: number\n gameName: string\n headCodeUrl: string\n id: string\n isCreator: number\n isElite: number\n isForceRecommend: number\n isHide: number\n isLock: number\n isMine: number\n isOfficial: number\n isRecommend: number\n isTop: number\n lastEditorTime?: string\n likeCount: number\n postContent: DNAPostContent[]\n postH5Content: string\n postTime: string\n postTitle: string\n postType: number\n postUserId: string\n refreshHour: number\n score: number\n topics: DNATopicShort[]\n userHeadCode: string\n userLevel: number\n userModeratorIdentity: number\n userName: string\n whiteUrl: any[]\n}\n\nexport interface DNAPostContent {\n contentType: PostContentType\n imgHeight: number\n imgWidth: number\n url?: string\n content?: string\n contentVideo?: DNAPostContentVideo\n}\n\nexport interface DNAComment {\n checkStatus: number\n commentContent: DNAPostContent[]\n commentId: string\n commentTime: string\n contentTextStatus: number\n floor: number\n isCreator: number\n isLike: number\n isMine: number\n isOfficial: number\n isPublisher: number\n likeCount: number\n replyCount: number\n replyVos: DNAReplyVos[]\n userHeadCode?: string\n userHeadUrl: string\n userId: string\n userLevel: number\n userModeratorIdentity: number\n userName: string\n}\n\nexport interface DNAReplyVos {\n checkStatus: number\n contentTextStatus: number\n createTime: number\n isCreator: number\n isLike: number\n isMine: number\n isOfficial: number\n isPublisher: number\n likeCount: number\n postCommentId: string\n postCommentReplayId: string\n replyContent: DNAPostContent[]\n replyContentStr: string\n replyId: string\n replyTime: string\n toUserIsCreator: number\n toUserModeratorIdentity: number\n toUserName: string\n userHeadCode?: string\n userHeadUrl: string\n userId: string\n userLevel: number\n userModeratorIdentity: number\n userName: string\n}\n\nexport interface DNAGameForumVo {\n forumDataType: number\n forumListShowType: number\n forumType: number\n forumUiType: number\n iconUrl: string\n iconWhiteUrl: string\n id: number\n isOfficial: number\n isTrend: number\n name: string\n sort: number\n}\n\nexport enum PostContentType {\n TEXT = 1,\n IMAGE = 2,\n VIDEO = 5,\n}\n\nexport interface DNAPostContentVideo {\n videoUrl: string // videoUrl\n coverUrl?: string // coverUrl\n}\n\nclass DNAApiResponse<T = any> {\n code: number = 0\n msg: string = \"\"\n success: boolean = false\n data?: T\n\n constructor(raw_data: any) {\n this.code = raw_data.code || 0\n this.msg = raw_data.msg || \"\"\n this.success = raw_data.success || false\n this.data = raw_data.data\n }\n\n // 判断是否成功\n get is_success() {\n return this.success && [RespCode.OK_ZERO, RespCode.OK_HTTP].includes(this.code)\n }\n\n // 错误响应静态方法\n static err<T = undefined>(msg: string, code: number = RespCode.ERROR): DNAApiResponse<T> {\n return new DNAApiResponse<T>({ code, msg, data: undefined, success: false })\n }\n}\n//#endregion\n\n//#region utils\n\n// RSA加密函数\nfunction rsa_encrypt(text: string, public_key_b64: string): string {\n try {\n // 将base64公钥转换为PEM格式\n const lines: string[] = []\n for (let i = 0; i < public_key_b64.length; i += 64) {\n lines.push(public_key_b64.slice(i, i + 64))\n }\n const pem = `-----BEGIN PUBLIC KEY-----\\n${lines.join(\"\\n\")}\\n-----END PUBLIC KEY-----`\n\n // 导入PEM格式的RSA公钥\n const publicKey = forge.pki.publicKeyFromPem(pem)\n\n // 执行PKCS1_v1_5加密\n const textBytes = forge.util.encodeUtf8(text)\n const encrypted = publicKey.encrypt(textBytes)\n\n return forge.util.encode64(encrypted)\n } catch (e) {\n throw new Error(`[DNA] RSA 加密失败: ${(e as Error).message}`)\n }\n}\n\n// 生成随机字符串\nfunction rand_str(length: number = 16): string {\n const chars = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\"\n let result = \"\"\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length))\n }\n return result\n}\n\n// MD5加密并转换为大写\nfunction md5_upper(text: string): string {\n const md = forge.md.md5.create()\n md.update(text)\n return md.digest().toHex().toUpperCase()\n}\n\n// 签名哈希函数\nfunction signature_hash(text: string): string {\n function swap_positions(text: string, positions: number[]): string {\n const chars = text.split(\"\")\n for (let i = 1; i < positions.length; i += 2) {\n const p1 = positions[i - 1]\n const p2 = positions[i]\n if (p1 >= 0 && p1 < chars.length && p2 >= 0 && p2 < chars.length) {\n ;[chars[p1], chars[p2]] = [chars[p2], chars[p1]]\n }\n }\n return chars.join(\"\")\n }\n return swap_positions(md5_upper(text), [1, 13, 5, 17, 7, 23])\n}\n\n// 签名函数\nfunction sign_fI(data: Record<string, any>, secret: string): string {\n const pairs: string[] = []\n const sortedKeys = Object.keys(data).sort()\n for (const k of sortedKeys) {\n const v = data[k]\n if (v !== null && v !== undefined && v !== \"\") {\n pairs.push(`${k}=${v}`)\n }\n }\n const qs = pairs.join(\"&\")\n return signature_hash(`${qs}&${secret}`)\n}\n\n// XOR编码函数\nfunction xor_encode(text: string, key: string): string {\n const encoder = new TextEncoder()\n const tb = encoder.encode(text)\n const kb = encoder.encode(key)\n const out: string[] = []\n for (let i = 0; i < tb.length; i++) {\n const b = tb[i]\n const e = (b & 255) + (kb[i % kb.length] & 255)\n out.push(`@${e}`)\n }\n return out.join(\"\")\n}\n\n// 上传图片签名 - 字符交换\nfunction swapForUploadImgApp(text: string): string {\n const chars = text.split(\"\")\n const swaps = [\n [3, 23],\n [11, 32],\n [22, 42],\n [25, 48],\n ]\n for (const [p1, p2] of swaps) {\n if (p1 < chars.length && p2 < chars.length) {\n ;[chars[p1], chars[p2]] = [chars[p2], chars[p1]]\n }\n }\n return chars.join(\"\")\n}\n\n// AES 解密图片 URL\nfunction aesDecryptImageUrl(encryptedUrl: string, key: string): string {\n const swapped = swapForUploadImgApp(encryptedUrl)\n\n const encryptedData = forge.util.decode64(swapped)\n\n const decipher = forge.cipher.createDecipher(\"AES-CBC\", key)\n decipher.start({ iv: \"A-16-Byte-String\" })\n decipher.update(forge.util.createBuffer(encryptedData))\n decipher.finish()\n\n return decipher.output.getBytes()\n}\n\n// 构建上传图片签名(返回签名和密钥)\nfunction build_upload_signature(public_key: string): { signature: string; key: string } {\n const key = rand_str(16)\n const encrypted = rsa_encrypt(key, public_key)\n const signature = swapForUploadImgApp(encrypted)\n return { signature, key }\n}\n\n// 构建普通签名\nfunction build_signature(data: Record<string, any>, token?: string): Record<string, any> {\n const ts = Date.now()\n const sign_data = { ...data, timestamp: ts, token }\n const sec = rand_str(16)\n const sig = sign_fI(sign_data, sec)\n const enc = xor_encode(sig, sec)\n return { s: enc, t: ts, k: sec }\n}\n//#endregion\n"
|
|
5
|
+
"export enum RespCode {\n ERROR = -999,\n OK_ZERO = 0,\n OK_HTTP = 200,\n BAD_REQUEST = 400,\n SERVER_ERROR = 500,\n}\n\nexport class TimeBasicResponse<T = any> {\n code: number = 0\n msg: string = \"\"\n data?: T\n\n constructor(raw_data: any) {\n this.code = raw_data.code || 0\n this.msg = raw_data.msg || \"\"\n this.data = raw_data.data\n }\n\n get is_success(): boolean {\n return this.code === RespCode.OK_HTTP || this.code === RespCode.OK_ZERO\n }\n\n get success(): boolean {\n return this.is_success\n }\n\n static err<T = undefined>(msg: string, code: number = RespCode.ERROR): TimeBasicResponse<T> {\n return new TimeBasicResponse<T>({ code, msg, data: undefined })\n }\n}\n",
|
|
6
|
+
"import * as forge from \"node-forge\"\n\nexport interface RequestOptions {\n method?: \"GET\" | \"POST\"\n sign?: boolean\n file?: File\n tokenSig?: boolean\n h5?: boolean\n token?: boolean\n refer?: boolean\n params?: Record<string, any>\n max_retries?: number\n retry_delay?: number\n timeout?: number\n}\n\nexport interface HeadersPayload {\n headers: Record<string, any>\n payload: string | FormData | undefined\n}\n\nexport function rsa_encrypt(text: string, public_key_b64: string): string {\n try {\n const lines: string[] = []\n for (let i = 0; i < public_key_b64.length; i += 64) {\n lines.push(public_key_b64.slice(i, i + 64))\n }\n const pem = `-----BEGIN PUBLIC KEY-----\\n${lines.join(\"\\n\")}\\n-----END PUBLIC KEY-----`\n\n const publicKey = forge.pki.publicKeyFromPem(pem)\n const textBytes = forge.util.encodeUtf8(text)\n const encrypted = publicKey.encrypt(textBytes)\n\n return forge.util.encode64(encrypted)\n } catch (e) {\n throw new Error(`[DNA] RSA 加密失败: ${(e as Error).message}`)\n }\n}\n\nexport function rand_str(length: number = 16): string {\n const chars = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\"\n let result = \"\"\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length))\n }\n return result\n}\n\nexport function md5_upper(text: string): string {\n const md = forge.md.md5.create()\n md.update(text)\n return md.digest().toHex().toUpperCase()\n}\n\nexport function signature_hash(text: string): string {\n function swap_positions(text: string, positions: number[]): string {\n const chars = text.split(\"\")\n for (let i = 1; i < positions.length; i += 2) {\n const p1 = positions[i - 1]\n const p2 = positions[i]\n if (p1 >= 0 && p1 < chars.length && p2 >= 0 && p2 < chars.length) {\n ;[chars[p1], chars[p2]] = [chars[p2], chars[p1]]\n }\n }\n return chars.join(\"\")\n }\n return swap_positions(md5_upper(text), [1, 13, 5, 17, 7, 23])\n}\n\nexport interface SignatureInfo {\n s: string\n t: number\n k: string\n}\n\nexport function sign_fI(data: Record<string, any>, secret: string): SignatureInfo {\n const pairs: string[] = []\n const sortedKeys = Object.keys(data).sort()\n for (const k of sortedKeys) {\n const v = data[k]\n if (v !== null && v !== undefined && v !== \"\") {\n pairs.push(`${k}=${v}`)\n }\n }\n const qs = pairs.join(\"&\")\n const k = rand_str()\n const t = Date.now()\n const s = signature_hash(`${qs}&${k}&${t}&${secret}`)\n return { s, t, k }\n}\n\nexport interface UploadSignatureInfo {\n signature: string\n key: string\n}\n\nexport function build_signature(data: Record<string, any>, secret: string): SignatureInfo {\n return sign_fI(data, secret)\n}\n\nexport function build_upload_signature(public_key_b64: string): UploadSignatureInfo {\n const key = rand_str()\n const t = Date.now()\n const encrypted_key = rsa_encrypt(`${key}|${t}`, public_key_b64)\n return {\n signature: signature_hash(encrypted_key),\n key: key,\n }\n}\n\nexport function xor_encode(text: string, key: string): string {\n const encoder = new TextEncoder()\n const tb = encoder.encode(text)\n const kb = encoder.encode(key)\n const out: string[] = []\n for (let i = 0; i < tb.length; i++) {\n const b = tb[i]\n const e = (b & 255) + (kb[i % kb.length] & 255)\n out.push(`@${e}`)\n }\n return out.join(\"\")\n}\n\nexport function swapForUploadImgApp(text: string): string {\n const chars = text.split(\"\")\n const swaps = [\n [3, 23],\n [11, 32],\n [22, 42],\n [25, 48],\n ]\n for (const [p1, p2] of swaps) {\n if (p1 < chars.length && p2 < chars.length) {\n ;[chars[p1], chars[p2]] = [chars[p2], chars[p1]]\n }\n }\n return chars.join(\"\")\n}\n\nexport function aesDecryptImageUrl(url: string, key: string): string {\n const xor_decoded = xor_decode(url.substring(1), key)\n const swap_decoded = swapForUploadImgApp(xor_decoded)\n return swap_decoded\n}\n\nfunction xor_decode(encoded: string, key: string): string {\n const parts = encoded.split(\"@\").filter((p) => p)\n const encoder = new TextEncoder()\n const decoder = new TextDecoder()\n const kb = encoder.encode(key)\n const out: number[] = []\n for (let i = 0; i < parts.length; i++) {\n const val = parseInt(parts[i], 10)\n const b = (val - (kb[i % kb.length] & 255)) & 255\n out.push(b)\n }\n return decoder.decode(new Uint8Array(out))\n}\n",
|
|
7
|
+
"import { TimeBasicResponse, RespCode } from \"../TimeBasicResponse\"\nimport { DNACommonConfigEntity } from \"../type-generated\"\nimport { build_signature, build_upload_signature, rsa_encrypt, RequestOptions, HeadersPayload } from \"./utils\"\n\nexport class DNABaseAPI {\n public fetchFn?: typeof fetch\n public is_h5 = false\n public RSA_PUBLIC_KEY =\n \"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGpdbezK+eknQZQzPOjp8mr/dP+QHwk8CRkQh6C6qFnfLH3tiyl0pnt3dePuFDnM1PUXGhCkQ157ePJCQgkDU2+mimDmXh0oLFn9zuWSp+U8uLSLX3t3PpJ8TmNCROfUDWvzdbnShqg7JfDmnrOJz49qd234W84nrfTHbzdqeigQIDAQAB\"\n public BASE_URL = \"https://dnabbs-api.yingxiong.com/\"\n protected uploadKey: string = \"\"\n public sign_api_urls = new Set<string>()\n\n constructor(\n public dev_code: string,\n public token = \"\",\n options: { fetchFn?: typeof fetch; is_h5?: boolean; rsa_public_key?: string } = {},\n ) {\n this.fetchFn = options.fetchFn\n if (options.is_h5 !== undefined) this.is_h5 = options.is_h5\n if (options.rsa_public_key !== undefined) this.RSA_PUBLIC_KEY = options.rsa_public_key\n }\n\n async getRsaPublicKey() {\n if (this.RSA_PUBLIC_KEY) {\n return this.RSA_PUBLIC_KEY\n }\n const res = await this._dna_request<{ key: string }>(\"config/getRsaPublicKey\")\n\n if (res.is_success && res.data) {\n const key = res.data.key\n if (typeof key === \"string\") {\n this.RSA_PUBLIC_KEY = key\n }\n }\n return this.RSA_PUBLIC_KEY\n }\n\n public async getHeaders(options?: {\n payload?: Record<string, any> | string | FormData\n exparams?: Record<string, any>\n dev_code?: string\n refer?: boolean\n token?: string\n tokenSig?: boolean\n h5?: boolean\n }): Promise<HeadersPayload> {\n let { payload, exparams, dev_code = this.dev_code, refer, token = this.token, tokenSig, h5 } = options || {}\n\n const CONTENT_TYPE = \"application/x-www-form-urlencoded; charset=utf-8\"\n const iosBaseHeader = {\n version: \"1.1.3\",\n source: \"ios\",\n \"Content-Type\": CONTENT_TYPE,\n \"User-Agent\": \"DoubleHelix/4 CFNetwork/3860.100.1 Darwin/25.0.0\",\n }\n const h5BaseHeader = {\n version: \"3.11.0\",\n source: \"h5\",\n \"Content-Type\": CONTENT_TYPE,\n \"User-Agent\":\n \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36\",\n }\n const is_h5 = this.is_h5 || h5 || false\n const headers = { ...(is_h5 ? h5BaseHeader : iosBaseHeader) } as Record<string, any>\n if (dev_code) {\n headers.devCode = dev_code\n }\n if (refer || is_h5) {\n headers.origin = \"https://dnabbs.yingxiong.com\"\n headers.refer = \"https://dnabbs.yingxiong.com/\"\n }\n if (token) {\n headers.token = token\n }\n if (payload instanceof FormData) {\n const pk = await this.getRsaPublicKey()\n const { signature, key } = build_upload_signature(pk)\n headers.t = signature\n this.uploadKey = key\n\n if (exparams) {\n for (const [key, value] of Object.entries(exparams)) {\n payload.append(key, String(value))\n }\n }\n\n delete headers[\"Content-Type\"]\n } else if (typeof payload === \"object\") {\n const si = build_signature(payload, tokenSig ? token : \"\")\n Object.assign(payload, { sign: si.s, timestamp: si.t })\n if (exparams) {\n Object.assign(payload, exparams)\n }\n\n const params = new URLSearchParams()\n Object.entries(payload).forEach(([key, value]) => {\n params.append(key, String(value))\n })\n payload = params.toString()\n\n const rk = si.k\n const pk = await this.getRsaPublicKey()\n const ek = rsa_encrypt(rk, pk)\n if (this.is_h5) {\n headers.k = ek\n } else {\n headers.rk = rk\n headers.key = ek\n }\n }\n return { headers, payload }\n }\n\n async needSign(url: string): Promise<boolean> {\n if (this.sign_api_urls.size === 0) {\n try {\n await this.initializeSignConfig()\n } catch (error) {\n console.error(\"初始化签名配置失败:\", error)\n this.sign_api_urls = new Set(\n [\n \"/user/sdkLogin\",\n \"/forum/postPublish\",\n \"/forum/comment/createComment\",\n \"/forum/comment/createReply\",\n \"/user/getSmsCode\",\n \"/role/defaultRoleForTool\",\n \"/media/av/cfg/getVideos\",\n \"/media/av/cfg/getAudios\",\n \"/media/av/cfg/getImages\",\n \"/encourage/signin/signin\",\n ].map((item) => item.replace(/^\\/+/, \"\")),\n )\n }\n }\n return this.sign_api_urls.has(url)\n }\n\n async initializeSignConfig(): Promise<void> {\n try {\n const configRes = await this._dna_request<DNACommonConfigEntity>(\"config/getCommonConfig\", undefined, { sign: false })\n if (configRes.is_success && configRes.data?.signApiConfigVo?.signApiList) {\n this.sign_api_urls = new Set(configRes.data.signApiConfigVo.signApiList.map((item) => item.replace(/^\\/+/, \"\")))\n }\n } catch (error) {\n console.error(\"初始化签名配置失败:\", error)\n }\n }\n\n public async _dna_request_h5<T = any>(url: string, data?: any, options?: RequestOptions): Promise<TimeBasicResponse<T>> {\n return await this._dna_request(url, data, { ...options, h5: true })\n }\n\n public async _dna_request<T = any>(url: string, data?: any, options?: RequestOptions): Promise<TimeBasicResponse<T>> {\n let { method = \"POST\", sign, h5, refer, params, max_retries = 3, retry_delay = 1, timeout = 10000, token, tokenSig } = options || {}\n\n // 如果未明确指定 sign,则根据 URL 自动判断\n if (sign === undefined && (await this.needSign(url))) {\n sign = true\n }\n let headers: Record<string, any>\n if (sign) {\n const { payload: p, headers: h } = await this.getHeaders({\n payload: data,\n refer,\n exparams: params,\n token: token ? this.token : undefined,\n tokenSig,\n h5,\n })\n data = p\n headers = h\n } else {\n const { headers: h } = await this.getHeaders({ token: token ? this.token : undefined, refer, h5 })\n headers = h\n }\n\n for (let attempt = 0; attempt < max_retries; attempt++) {\n try {\n let body: string | FormData | undefined = data\n if (data && typeof data === \"object\" && !(data instanceof FormData)) {\n const p = new URLSearchParams()\n Object.entries(data).forEach(([key, value]) => {\n if (value !== undefined) p.append(key, String(value))\n })\n body = p.toString()\n }\n const fetchOptions: RequestInit = {\n method,\n headers,\n body,\n }\n\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), timeout)\n\n const initOptions = {\n ...fetchOptions,\n signal: controller.signal,\n }\n const response = this.fetchFn\n ? await this.fetchFn(`${this.BASE_URL}${url}`, initOptions)\n : await fetch(`${this.BASE_URL}${url}`, initOptions)\n clearTimeout(timeoutId)\n\n const contentType = response.headers.get(\"content-type\") || \"\"\n let raw_res: any\n\n if (contentType.includes(\"text/\")) {\n const textData = await response.text()\n raw_res = {\n code: RespCode.ERROR,\n data: textData,\n }\n } else {\n raw_res = await response.json()\n }\n\n if (typeof raw_res === \"object\" && raw_res !== null) {\n try {\n if (typeof raw_res.data === \"string\") {\n raw_res.data = JSON.parse(raw_res.data)\n }\n } catch (e) {}\n }\n\n return new TimeBasicResponse<T>(raw_res)\n } catch (e) {\n console.error(`请求失败: ${(e as Error).message}`)\n if (attempt < max_retries - 1) {\n await new Promise((resolve) => setTimeout(resolve, retry_delay * Math.pow(2, attempt)))\n }\n }\n }\n\n return TimeBasicResponse.err(\"请求服务器失败,已达最大重试次数\")\n }\n}\n\n/**\n * 子模块基类,代理 DNABaseAPI 的方法和属性\n * 所有子模块都通过这个类代理到共享的 BaseAPI 实例\n */\nexport abstract class DNASubModule {\n protected _base: DNABaseAPI\n\n constructor(base: DNABaseAPI) {\n this._base = base\n }\n\n // 代理属性访问\n get dev_code(): string {\n return this._base.dev_code\n }\n\n get token(): string {\n return this._base.token\n }\n\n get fetchFn(): typeof fetch | undefined {\n return this._base.fetchFn\n }\n\n get is_h5(): boolean {\n return this._base.is_h5\n }\n\n get RSA_PUBLIC_KEY(): string {\n return this._base.RSA_PUBLIC_KEY\n }\n\n get BASE_URL(): string {\n return this._base.BASE_URL\n }\n\n // 代理方法\n async getRsaPublicKey(): Promise<string> {\n return this._base.getRsaPublicKey()\n }\n\n public async _dna_request<T = any>(url: string, data?: any, options?: RequestOptions): Promise<TimeBasicResponse<T>> {\n return this._base._dna_request(url, data, options)\n }\n\n public async _dna_request_h5<T = any>(url: string, data?: any, options?: RequestOptions): Promise<TimeBasicResponse<T>> {\n return this._base._dna_request_h5(url, data, options)\n }\n\n public async getHeaders(options?: {\n payload?: Record<string, any> | string | FormData\n exparams?: Record<string, any>\n dev_code?: string\n refer?: boolean\n token?: string\n tokenSig?: boolean\n h5?: boolean\n }): Promise<HeadersPayload> {\n return this._base.getHeaders(options)\n }\n}\n",
|
|
8
|
+
"import { DNASubModule, DNABaseAPI } from \"./base\"\nimport { DNARoleEntity, DNAShortNoteEntity, DNACharDetailEntity, DNAWeaponDetailEntity } from \"../type-generated\"\n\nexport class GameAPI extends DNASubModule {\n constructor(base: DNABaseAPI) {\n super(base)\n }\n async defaultRoleForTool(otherUserId?: string, type: number = 1) {\n const data = { otherUserId, type }\n return await this._dna_request<DNARoleEntity>(\"role/defaultRoleForTool\", data, { sign: true, token: true, tokenSig: true })\n }\n\n async getMhSwitchStatus() {\n return await this._dna_request<{ config: string }>(\"user/push/getMhSwitchStatus\")\n }\n\n async getRoleDetail(char_id: string, char_eid: string, otherUserId?: string) {\n const data = { charId: char_id, charEid: char_eid, type: 1, otherUserId } as any\n return await this._dna_request<DNACharDetailEntity>(\"role/getCharDetail\", data)\n }\n\n async getShortNoteInfo() {\n return await this._dna_request<DNAShortNoteEntity>(\"role/getShortNoteInfo\")\n }\n\n async getWeaponDetail(weapon_id: string, weapon_eid: string, otherUserId?: string) {\n const data = { weaponId: weapon_id, weaponEid: weapon_eid, type: 1, otherUserId }\n return await this._dna_request<DNAWeaponDetailEntity>(\"role/getWeaponDetail\", data)\n }\n\n async updateMhSwitchStatus(config: string) {\n return await this._dna_request(\"user/push/updateMhSwitchStatus\", { config })\n }\n\n async soulTask() {\n return await this._dna_request(\"role/soul/task\")\n }\n}\n",
|
|
9
|
+
"import { DNASubModule, DNABaseAPI } from \"./base\"\nimport {\n DNAPostDetailResponse,\n DNAGameSignInShowDataBean,\n DNAGameSignInResultBean,\n DNAUserTaskProcessEntity,\n DNADiscussAreaResponse,\n DNAHomeOffWaterResponse,\n DNATipsBean,\n DNAIsRedPointBean,\n DNARecommendBean,\n DNATopicListResponse,\n DNAReplyListResponse,\n DNACommentListResponse,\n DNASignInBean,\n DNABlockBean,\n DNACreateCommentResponse,\n DNAReplayCommentResponse,\n DNAFollowBean,\n DNAGameBannerBean,\n DNAFraternityResponse,\n DNAStatisticsBean,\n DNAPostListBean,\n DNAReceiveRecord,\n DNASearchPostBean,\n DNASearchTopicBean,\n DNASearchUserBean,\n DNASoulTaskBean,\n} from \"../type-generated\"\n\nconst DNA_GAME_ID = 268\n\nexport class HomeAPI extends DNASubModule {\n constructor(base: DNABaseAPI) {\n super(base)\n }\n async adminAdjustScore(postId: number, gameForumId: number, weight: string, gameId: number = DNA_GAME_ID) {\n const data = { postId, gameId: gameId ?? DNA_GAME_ID, gameForumId, weight }\n return await this._dna_request(\"forum/moderator/setPostWeight\", data)\n }\n\n async adminDelete(post: { postId: number; gameId?: number; gameForumId: number }, content: string, reasonCode: number) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n content: content,\n reasonCode: reasonCode,\n }\n return await this._dna_request(\"forum/moderator/postDelete\", data)\n }\n\n async adminMovePost(\n post: { postId: number; gameId?: number; gameForumId: number },\n newGameId: number,\n newForumId: number,\n newTopicIdStr: string,\n ) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n newGameId,\n newForumId,\n newTopicIdStr,\n }\n return await this._dna_request(\"forum/moderator/postMove\", data)\n }\n\n async adminRefreshTime(post: { postId: number; gameId?: number; gameForumId: number }, refresh: number) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n refresh,\n }\n return await this._dna_request(\"forum/moderator/setRefresh\", data)\n }\n\n async blockList() {\n return await this._dna_request<DNABlockBean>(\"user/block/list\")\n }\n\n async blockOther(blockPostId: number, blockUserId: string, type: number) {\n return await this._dna_request(\"user/block/other\", { blockPostId, blockUserId, type })\n }\n\n async collect(postId: number, toUserId: string, operateType = 1) {\n const data = { operateType, postId, toUserId }\n return await this._dna_request(\"forum/collect\", data)\n }\n\n async commentDelete(\n comment: { id: number; gameId: number; gameForumId: number },\n entityType: number,\n content: string,\n reasonCode: number,\n ) {\n const data = { id: comment.id, gameId: comment.gameId, gameForumId: comment.gameForumId, entityType, content, reasonCode }\n return await this._dna_request(\"forum/commentReplyDelete\", data)\n }\n\n async createComment(post: { userId: string; postId: string; gameForumId: number }, content: string) {\n const content_json = JSON.stringify([\n {\n content,\n contentType: \"1\",\n },\n ])\n const data = { postId: post.postId, forumId: post.gameForumId, postType: \"1\", content: content_json }\n return await this._dna_request<DNACreateCommentResponse>(\"forum/comment/createComment\", data, {\n sign: true,\n params: { toUserId: post.userId },\n })\n }\n\n async createReply(post: { userId: string; postId: string; postCommentId: string; gameForumId: number }, content: string) {\n const content_json = JSON.stringify([\n {\n content,\n contentType: \"1\",\n imgHeight: 0,\n imgWidth: 0,\n url: \"\",\n },\n ])\n const data = {\n content: content_json,\n forumId: post.gameForumId,\n postCommentId: post.postCommentId,\n postId: post.postId,\n postType: \"1\",\n toUserId: post.userId,\n }\n return await this._dna_request<DNAReplayCommentResponse>(\"forum/comment/createReply\", data, {\n sign: true,\n params: { toUserId: post.userId },\n })\n }\n\n async createReplyList(\n post: { userId: string; postId: string; postCommentId: string; postCommentReplyId: string; gameForumId: number },\n content: string,\n ) {\n const content_json = JSON.stringify([\n {\n content,\n contentType: \"1\",\n imgHeight: 0,\n imgWidth: 0,\n url: \"\",\n },\n ])\n const data = {\n content: content_json,\n forumId: post.gameForumId,\n postCommentId: post.postCommentId,\n postCommentReplyId: post.postCommentReplyId,\n postId: post.postId,\n postType: \"1\",\n toUserId: post.userId,\n }\n return await this._dna_request<DNAReplayCommentResponse>(\"forum/comment/createReply\", data, {\n sign: true,\n params: { toUserId: post.userId },\n })\n }\n\n async deletePost(deleteType: number, id: number) {\n return await this._dna_request(\"forum/more/delete\", { deleteType, id }, { sign: true, refer: true })\n }\n\n async followUser(followUserId: string, unfollow?: boolean) {\n const data = { followUserId, operateType: unfollow ? 0 : 1 }\n return await this._dna_request(\"user/followUser\", data, { sign: true })\n }\n\n async getFollowState(followUserId: string) {\n const data = { followUserId }\n return await this._dna_request<DNAFollowBean>(\"user/isFollow\", data)\n }\n\n async gameSignIn(dayAwardId: number, period: number) {\n const data = { dayAwardId, periodId: period, signinType: 1 }\n return await this._dna_request<DNAGameSignInResultBean>(\"encourage/signin/signin\", data, { sign: true })\n }\n\n async getDoujin(forumId: number) {\n return await this._dna_request<DNADiscussAreaResponse>(\"forum/discuss/getDoujin\", { forumId })\n }\n\n async getExchange(forumId: number) {\n return await this._dna_request<DNADiscussAreaResponse>(\"forum/discuss/getExchange\", { forumId })\n }\n\n async getGameBanner(gameId = DNA_GAME_ID) {\n return await this._dna_request<DNAGameBannerBean>(\"forum/gameBanner\", { gameId })\n }\n\n async getPostByTopic(\n topicId: number = 177,\n pageIndex: number = 1,\n pageSize: number = 20,\n searchType: number = 1,\n timeType: number = 0,\n ) {\n const data = {\n topicId,\n gameId: DNA_GAME_ID,\n pageIndex,\n pageSize,\n searchType,\n timeType,\n }\n return await this._dna_request<DNATopicListResponse>(\"forum/getPostByTopic\", data)\n }\n\n async getPostCommentList(postId: number, pageIndex: number = 1, pageSize: number = 20, isOnlyPublisher: number = 0) {\n return await this._dna_request<DNACommentListResponse>(\"forum/comment/getPostCommentList\", {\n postId,\n pageIndex,\n pageSize,\n isOnlyPublisher,\n })\n }\n\n async getPostDetail(postId: string) {\n return await this._dna_request<DNAPostDetailResponse>(\"forum/getPostDetail\", { postId })\n }\n\n async getPostList(forumId: number = 48, pageIndex: number = 1, pageSize: number = 20, searchType: number = 1, timeType: number = 0) {\n const data = {\n forumId: forumId,\n gameId: DNA_GAME_ID,\n pageIndex: pageIndex,\n pageSize: pageSize,\n searchType: searchType,\n timeType: timeType,\n }\n return await this._dna_request<DNADiscussAreaResponse>(\"forum/list\", data)\n }\n\n async getRankList(forumId: number) {\n return await this._dna_request<DNAFraternityResponse>(\"forum/discuss/getRank\", { forumId })\n }\n\n async getRecommendPosts(gameId = DNA_GAME_ID, pageIndex: number = 1, pageSize: number = 20) {\n return await this._dna_request<DNAHomeOffWaterResponse>(\"forum/getRecommendPosts\", { gameId, pageIndex, pageSize })\n }\n\n async getReplyList(postId: number, postCommentId: number, pageIndex: number = 1, pageSize: number = 20) {\n return await this._dna_request<DNAReplyListResponse>(\"forum/comment/getReplyList\", { postId, postCommentId, pageIndex, pageSize })\n }\n\n async getStatistics(gameId = DNA_GAME_ID) {\n return await this._dna_request<DNAStatisticsBean>(\"forum/statistics\", { gameId })\n }\n\n async getTips() {\n return await this._dna_request<DNATipsBean>(\"config/getTips\")\n }\n\n async getWalkthrough(forumId: number) {\n return await this._dna_request<DNADiscussAreaResponse>(\"forum/discuss/getWalkthrough\", { forumId })\n }\n\n async hotList(type: number = 1, gameId = DNA_GAME_ID) {\n return await this._dna_request<DNAPostListBean[]>(\"forum/hot/ranking/list\", { gameId, type })\n }\n\n async haveSignIn() {\n const data = { gameId: DNA_GAME_ID }\n return await this._dna_request<DNASignInBean>(\"user/haveSignInNew\", data)\n }\n\n async isRedPoint() {\n return await this._dna_request<DNAIsRedPointBean>(\"forum/dynamic/isRedPoint\")\n }\n\n async signCalendar() {\n const data = { gameId: DNA_GAME_ID }\n return await this._dna_request<DNAGameSignInShowDataBean>(\"encourage/signin/show\", data)\n }\n\n async like(post: { gameForumId: string; postId: string; postType: string; userId: string }) {\n const data = {\n forumId: post.gameForumId,\n gameId: DNA_GAME_ID,\n likeType: \"1\",\n operateType: \"1\",\n postCommentId: \"\",\n postCommentReplyId: \"\",\n postId: post.postId,\n postType: post.postType,\n toUserId: post.userId,\n }\n return await this._dna_request(\"forum/like\", data)\n }\n\n async lockPost(post: { postId: number; gameId?: number; gameForumId: number }, operateType: number) {\n const data = { postId: post.postId, gameId: post.gameId ?? DNA_GAME_ID, gameForumId: post.gameForumId, operateType }\n return await this._dna_request(\"forum/moderator/postLock\", data)\n }\n\n async postDownOrUp(post: { postId: number; gameId?: number; gameForumId: number }, operateType: number) {\n const data = { postId: post.postId, gameId: post.gameId ?? DNA_GAME_ID, gameForumId: post.gameForumId, operateType }\n return await this._dna_request(\"forum/moderator/postDownOrUp\", data)\n }\n\n async postElite(post: { postId: number; gameId?: number; gameForumId: number }, operateType: number) {\n const data = { postId: post.postId, gameId: post.gameId ?? DNA_GAME_ID, gameForumId: post.gameForumId, operateType }\n return await this._dna_request(\"forum/moderator/postElite\", data)\n }\n\n async postHide(post: { postId: number; gameId?: number; gameForumId: number }, operateType: number) {\n const data = { postId: post.postId, gameId: post.gameId ?? DNA_GAME_ID, gameForumId: post.gameForumId, operateType }\n return await this._dna_request(\"forum/moderator/postHide\", data)\n }\n\n async reRank(post: { postId: number; gameId?: number; gameForumId: number }, weight: number) {\n const data = { postId: post.postId, gameId: post.gameId ?? DNA_GAME_ID, gameForumId: post.gameForumId, weight }\n return await this._dna_request(\"forum/moderator/reRank\", data)\n }\n\n async receiveLog(periodId: number, pageIndex: number, pageSize: number) {\n const data = { periodId, pageIndex, pageSize }\n return await this._dna_request<DNAReceiveRecord>(\"encourage/signin/receiveLog\", data)\n }\n\n async recommendList(recIndex: number, newIndex: number, size: number, history: string, gameId = DNA_GAME_ID) {\n const data = { gameId, recIndex, newIndex, size, history }\n return await this._dna_request<DNARecommendBean>(\"forum/recommend/list\", data)\n }\n\n async report(\n { commentId = 0, postId = 0, replyId = 0 }: { commentId?: number; postId?: number; replyId?: number },\n reportReason = 1,\n reportType = 1,\n ) {\n const data = { commentId, postId, replyId, reportReason, reportType }\n return await this._dna_request(\"forum/more/report\", data)\n }\n\n async searchPost(keyword: string, pageIndex: number, pageSize: number, gameId = DNA_GAME_ID, searchType = 1) {\n const data = { gameId, keyword, pageIndex, pageSize, searchType }\n return await this._dna_request<DNASearchPostBean>(\"forum/searchPost\", data)\n }\n\n async searchTopic(keyword: string, pageIndex: number, pageSize = 20, gameId = DNA_GAME_ID) {\n const data = { gameId, keyword, pageIndex, pageSize }\n return await this._dna_request<DNASearchTopicBean>(\"forum/searchPost\", data)\n }\n\n async searchUser(keyword: string, pageIndex: number, pageSize: number) {\n const data = { keyword, pageIndex, pageSize }\n return await this._dna_request<DNASearchUserBean>(\"forum/searchPost\", data)\n }\n\n async shareTask() {\n const data = { gameId: DNA_GAME_ID }\n return await this._dna_request(\"encourage/level/shareTask\", data)\n }\n\n async bbsSign() {\n const data = { gameId: DNA_GAME_ID }\n return await this._dna_request<DNASignInBean>(\"user/signIn\", data)\n }\n\n async strongRecommend(post: { postId: number; gameId?: number; gameForumId: number }, operateType = 1) {\n const data = {\n postId: post.postId,\n gameId: post.gameId ?? DNA_GAME_ID,\n gameForumId: post.gameForumId,\n operateType: operateType,\n }\n return await this._dna_request(\"forum/moderator/setForceRecommend\", data)\n }\n\n async viewCommunity() {\n return await this._dna_request(\"encourage/level/viewCommunity\")\n }\n\n async viewCount(postId: number, gameId = DNA_GAME_ID) {\n return await this._dna_request(\"forum/viewCount\", { gameId, postId })\n }\n\n async getTaskProcess() {\n const data = { gameId: DNA_GAME_ID }\n return await this._dna_request<DNAUserTaskProcessEntity>(\"encourage/level/getTaskProcess\", data)\n }\n\n async soulTask() {\n return await this._dna_request<DNASoulTaskBean>(\"role/soul/task\")\n }\n}\n",
|
|
10
|
+
"import { DNASubModule, DNABaseAPI } from \"./base\"\nimport {\n DNARoleEntityForTrend,\n DNARoleListBean,\n DNAMineFansBean,\n DNAMineFollowBean,\n DNADraftBean,\n DNAFastBindResultBean,\n DNABindStatus,\n DNAProfileResponse,\n DNAProfileLoadResponse,\n DNANotifySwitchEntity,\n DNAHistoryBean,\n DNAAcewarBean,\n DNAModeratorByGame,\n} from \"../type-generated\"\n\nexport class ProfileAPI extends DNASubModule {\n constructor(base: DNABaseAPI) {\n super(base)\n }\n async blackUser(toUserId: string, type: number) {\n return await this._dna_request(\"user/blackUser\", { toUserId, type })\n }\n\n async cleanFansNew(type: number, userFollowId: string) {\n return await this._dna_request(\"user/cleanFansNew\", { type, userFollowId })\n }\n\n async collect(postId: number, toUserId: string, operateType = 1) {\n return await this._dna_request(\"forum/collect\", { operateType, postId, toUserId })\n }\n\n async defaultRole(otherUserId?: string, type: number = 1) {\n return await this._dna_request<DNARoleEntityForTrend>(\"user/defaultRole\", { otherUserId, type })\n }\n\n async deleteRole(roleBoundId: string) {\n return await this._dna_request<DNARoleListBean>(\"role/remove\", { roleBoundId })\n }\n\n async draftDelete(draftId: string) {\n return await this._dna_request(\"forum/more/draftDelete\", { draftId })\n }\n\n async fans(otherUserId: string, pageNo: number, pageSize: number, type: number) {\n return await this._dna_request<DNAMineFansBean>(\"user/fans\", { otherUserId, pageNo, pageSize, type })\n }\n\n async fastBind() {\n return await this._dna_request<DNAFastBindResultBean>(\"role/quickBound\")\n }\n\n async follow(otherUserId: string, pageNo: number, pageSize: number, type: number) {\n return await this._dna_request<DNAMineFollowBean>(\"user/follow\", { otherUserId, pageNo, pageSize, type })\n }\n\n async followUser(followUserId: string, unfollow?: boolean) {\n return await this._dna_request(\"user/followUser\", { followUserId, operateType: unfollow ? 0 : 1 })\n }\n\n async getApplyStatus() {\n return await this._dna_request<DNABindStatus>(\"user/creator/getApplyStatus\")\n }\n\n async getDraftList(pageIndex: number, pageSize: number) {\n return await this._dna_request<DNADraftBean>(\"forum/getDraftList\", { pageIndex, pageSize })\n }\n\n async getMineComment(otherUserId: string, pageIndex: number, pageSize: number, type: number) {\n return await this._dna_request<DNAProfileResponse>(\"user/notice/mine\", { otherUserId, pageIndex, pageSize, type })\n }\n\n async getMinePost(otherUserId: string, pageIndex: number, pageSize: number, searchType: number, type: number, postType?: number) {\n return await this._dna_request<DNAProfileLoadResponse>(\"forum/getMinePost\", {\n otherUserId,\n pageIndex,\n pageSize,\n searchType,\n type,\n postType,\n })\n }\n\n async getNotifySwitch() {\n return await this._dna_request<DNANotifySwitchEntity>(\"user/push/getSwitchStatus\")\n }\n\n async historyView(pageIndex: number, pageSize: number) {\n return await this._dna_request<DNAHistoryBean>(\"forum/historyView\", { pageIndex, pageSize })\n }\n\n async like(data: {\n forumId: number\n gameId: number\n likeType: number\n operateType: number\n postCommentId: number\n postCommentReplyId: number\n postId: number\n postType: number\n toUserId: string\n }) {\n return await this._dna_request(\"forum/like\", data)\n }\n\n async manualBound(roleId: string, type: number, code: string) {\n return await this._dna_request<DNAAcewarBean>(\"role/manualBound\", { roleId, type, code })\n }\n\n async mine(otherUserId: string, searchType: number, type: number, postType?: number) {\n return await this._dna_request<DNAProfileResponse>(\"/user/mine\", { otherUserId, searchType, type, postType })\n }\n\n async mineV2(otherUserId: string) {\n return await this._dna_request<DNAProfileResponse>(\"/user/mineV2\", { otherUserId })\n }\n\n async moderatorByGame(gameId: number) {\n return await this._dna_request<DNAModeratorByGame>(\"user/moderator/getModeratorByGame\", { gameId })\n }\n\n async muteCancel(toUserId: string) {\n return await this._dna_request(\"forum/moderator/muteCancel\", { toUserId })\n }\n\n async muteUser(toUserId: string, gameIdStr: string, type: number, reason: number, content: string) {\n return await this._dna_request(\"forum/moderator/muteUser\", { toUserId, gameIdStr, type, reason, content })\n }\n\n async resetDefault(roleBoundId: string) {\n return await this._dna_request<DNARoleListBean>(\"role/resetDefault\", { roleBoundId })\n }\n\n async roleManager() {\n return await this._dna_request<DNARoleListBean>(\"role/list\")\n }\n}\n",
|
|
11
|
+
"import { DNASubModule, DNABaseAPI } from \"./base\"\nimport {\n DNACancleStatus,\n DNACommonBooleanBean,\n DNAPrivateSetBean,\n DNAUserAddressBean,\n DNAsettingBlackBean,\n DNAsettingMsgShiledBean,\n DNAsettingPostShiledBean,\n DNANotifySwitchEntity,\n} from \"../type-generated\"\n\nexport class SettingAPI extends DNASubModule {\n constructor(base: DNABaseAPI) {\n super(base)\n }\n async addAddress(receiverName: string, receiverMobile: string, receiverAddress: string) {\n return await this._dna_request(\"user/more/userAddressAdd\", { receiverName, receiverMobile, receiverAddress })\n }\n\n async blackUser(toUserId: string, type: number) {\n return await this._dna_request(\"user/blackUser\", { toUserId, type })\n }\n\n async cancelCode(code: string) {\n return await this._dna_request(\"user/more/cancelCode\", { code })\n }\n\n async cancel(cancelType: number, operateType: number, position: string, cancelReason: number | null, reasonDetail: string) {\n return await this._dna_request(\"user/more/cancel\", { cancelType, operateType, position, cancelReason, reasonDetail })\n }\n\n async deleteAddress(addressId: number) {\n return await this._dna_request<DNACommonBooleanBean>(\"user/more/deleteUserAddress\", { addressId })\n }\n\n async editAddress(addressId: number, receiverName: string, receiverMobile: string, receiverAddress: string) {\n return await this._dna_request<DNACommonBooleanBean>(\"user/more/userAddressEdit\", {\n addressId,\n receiverName,\n receiverMobile,\n receiverAddress,\n })\n }\n\n async feedback(listPic: string, proDesc: string, mobile: string, isLogin: number) {\n return await this._dna_request(\"user/more/feedback\", { listPic, proDesc, mobile, isLogin })\n }\n\n async getCancelStatus() {\n return await this._dna_request<DNACancleStatus>(\"user/more/getCancelStatus\")\n }\n\n async getNotifySwitch() {\n return await this._dna_request<DNANotifySwitchEntity>(\"user/push/getSwitchStatus\")\n }\n\n async getPrivateSet() {\n return await this._dna_request<DNAPrivateSetBean>(\"user/getPrivateSet\")\n }\n\n async getUserAddress(userId: number, type: number) {\n return await this._dna_request<DNAUserAddressBean>(\"user/more/getUserAddress\", { userId, type })\n }\n\n async getUserBlackList(pageIndex: number, pageSize: number) {\n return await this._dna_request<DNAsettingBlackBean>(\"user/getUserBlackList\", { pageIndex, pageSize })\n }\n\n async msgListDetail(pageNo: number, pageSize: number, type: number) {\n return await this._dna_request<DNAsettingMsgShiledBean>(\"user/block/listDetail\", { pageNo, pageSize, type })\n }\n\n async postListDetail(pageNo: number, pageSize: number, type: number) {\n return await this._dna_request<DNAsettingPostShiledBean>(\"user/block/listDetail\", { pageNo, pageSize, type })\n }\n\n async privateSet(operateType: number, option: number) {\n return await this._dna_request(\"user/privateSet\", { operateType, option })\n }\n\n async sendSms(mobile: string, timeStamp: string, type: number) {\n return await this._dna_request(\"user/sms/sendSms\", { mobile, timeStamp, type })\n }\n\n async setDefaultAddress(addressId: number) {\n return await this._dna_request<DNACommonBooleanBean>(\"user/more/setDefaultAddress\", { addressId })\n }\n\n async setNotifySwitch(operateType: number, switchType: number) {\n return await this._dna_request(\"user/push/updateSwitchStatus\", { operateType, switchType })\n }\n\n async userUploadImage(t: string, parts: FormData) {\n return await this._dna_request<string[]>(\"user/img/uploadFeedBack\", parts, { sign: true })\n }\n}\n",
|
|
12
|
+
"import { DNASubModule, DNABaseAPI } from \"./base\"\nimport {\n DNATopicListBean,\n DNAParseLinkBean,\n DNAPostPublishPageBean,\n DNAPublishPostResponse,\n DNARecomdBean,\n DNATrendPostBean,\n DNAVodTokenBean,\n DNATipsBean,\n DNACommonBooleanBean,\n} from \"../type-generated\"\n\nexport class TrendAPI extends DNASubModule {\n constructor(base: DNABaseAPI) {\n super(base)\n }\n async draftSave(\n content: string,\n draftId: string,\n h5Content: string,\n postTitle: string,\n postType: number,\n gameId: number,\n videoReUpload: number,\n ) {\n return await this._dna_request(\"forum/draftSave\", { content, draftId, h5Content, postTitle, postType, gameId, videoReUpload })\n }\n\n async followUser(followUserId: string, operateType: number) {\n return await this._dna_request(\"user/followUser\", { followUserId, operateType })\n }\n\n async getConfigTopicByGameId(name: string, showType: number) {\n return await this._dna_request<DNATopicListBean[]>(\"config/getConfigTopicByGameId\", { name, showType })\n }\n\n async getPostPublishPage() {\n return await this._dna_request<DNAPostPublishPageBean>(\"forum/getPostPublishPage\")\n }\n\n async getRecommend(history: string, pageSize: number) {\n return await this._dna_request<DNARecomdBean>(\"user/getRecommend\", { history, pageSize })\n }\n\n async getTips() {\n return await this._dna_request<DNATipsBean>(\"config/getTips\")\n }\n\n async getVodToken(fileName: string, title: string) {\n return await this._dna_request<DNAVodTokenBean>(\"forum/getVodToken\", { fileName, title })\n }\n\n async like(\n forumId: number,\n gameId: number,\n likeType: number,\n operateType: number,\n postCommentId: number,\n postCommentReplyId: number,\n postId: number,\n postType: number,\n toUserId: string,\n ) {\n return await this._dna_request(\"forum/like\", {\n forumId,\n gameId,\n likeType,\n operateType,\n postCommentId,\n postCommentReplyId,\n postId,\n postType,\n toUserId,\n })\n }\n\n async list(pageIndex: number, pageSize: number, userId: string) {\n return await this._dna_request<DNATrendPostBean>(\"/forum/dynamic/list\", { pageIndex, pageSize, userId })\n }\n\n async parseLink(link: string) {\n return await this._dna_request<DNAParseLinkBean>(\"forum/parseLink\", { link })\n }\n\n async posAdminEdit(\n content: string,\n gameForumId: number,\n h5Content: string,\n postId: string,\n postTitle: string,\n topics: string,\n postType: number,\n gameId: number,\n videoReUpload: number,\n ) {\n return await this._dna_request<DNAPublishPostResponse>(\"forum/moderator/postEdit\", {\n content,\n gameForumId,\n h5Content,\n postId,\n postTitle,\n topics,\n postType,\n gameId,\n videoReUpload,\n })\n }\n\n async postEdit(\n content: string,\n gameForumId: number,\n h5Content: string,\n postId: string,\n postTitle: string,\n topics: string,\n postType: number,\n videoReUpload: number,\n ) {\n return await this._dna_request<DNAPublishPostResponse>(\"forum/postEdit\", {\n content,\n gameForumId,\n h5Content,\n postId,\n postTitle,\n topics,\n postType,\n videoReUpload,\n })\n }\n\n async postPublish(\n content: string,\n draftId: string,\n gameForumId: number,\n gameId: number,\n h5Content: string,\n postTitle: string,\n postType: number,\n topics: string,\n ) {\n return await this._dna_request<DNAPublishPostResponse>(\"forum/postPublish\", {\n content,\n draftId,\n gameForumId,\n gameId,\n h5Content,\n postTitle,\n postType,\n topics,\n })\n }\n\n async safeCheck(url: string) {\n return await this._dna_request<DNACommonBooleanBean>(\"forum/more/safeCheck\", { url })\n }\n\n async uploadImage(t: string, parts: FormData, type: string) {\n return await this._dna_request<string[]>(\"config/img/upload\", parts, { sign: true })\n }\n\n async videoPostPublish(\n content: string,\n draftId: string,\n gameForumId: number,\n gameId: number,\n h5Content: string,\n postTitle: string,\n postType: number,\n topics: string,\n ) {\n return await this._dna_request<DNAPublishPostResponse>(\"forum/moderator/postPublish\", {\n content,\n draftId,\n gameForumId,\n gameId,\n h5Content,\n postTitle,\n postType,\n topics,\n })\n }\n\n async viewCount(gameId: number, postId: number) {\n return await this._dna_request(\"forum/viewCount\", { gameId, postId })\n }\n}\n",
|
|
13
|
+
"import { DNASubModule, DNABaseAPI } from \"./base\"\nimport {\n DNABlockBean,\n DNACanEditNickNameBean,\n DNACommonConfigEntity,\n DNAConfigSwitchBean,\n DNAFollowGameIdBean,\n DNAHaveOfficialRoleBean,\n DNAIsRedPointBean,\n DNARecommendConfig,\n DNAScreenResponse,\n DNASplashResponse,\n DNATokenBean,\n DNAUserHeadResponse,\n DNAWikiVoEntity,\n DNAModeratorPermission,\n DNAUserDataBean,\n DNAGameConfigResponse,\n DNAGameNewHeadBean,\n DNAEmojiConfigBean,\n} from \"../type-generated\"\n\nexport class UserAPI extends DNASubModule {\n constructor(base: DNABaseAPI) {\n super(base)\n }\n // 检查登录\n async loginLog() {\n return await this._dna_request(\"user/login/log\")\n }\n\n async blockList() {\n return await this._dna_request<DNABlockBean>(\"user/block/list\")\n }\n\n async canEditNickName() {\n return await this._dna_request<DNACanEditNickNameBean>(\"user/canUpdateNameTimes\")\n }\n\n async cancel(cancelType: number, operateType: number, position: string, cancelReason: number | null, reasonDetail: string) {\n return await this._dna_request(\"user/more/cancel\", { cancelType, operateType, position, cancelReason, reasonDetail })\n }\n\n async cleanToken() {\n return await this._dna_request(\"user/cleanToken\")\n }\n\n async editGender(gender: number) {\n return await this._dna_request(\"user/editGender\", { gender })\n }\n\n async editNickName(userName: string) {\n return await this._dna_request<DNACanEditNickNameBean>(\"user/updateName\", { userName })\n }\n\n async getCommonConfig() {\n return await this._dna_request<DNACommonConfigEntity>(\"config/getCommonConfig\")\n }\n\n async getConfig() {\n return await this._dna_request<DNASplashResponse>(\"config/getConfig\")\n }\n\n async getConfigSwitch() {\n return await this._dna_request<DNAConfigSwitchBean>(\"config/switchAll\")\n }\n\n async getModeratorPermission() {\n return await this._dna_request<DNAModeratorPermission>(\"user/moderator/getModeratorPermission\")\n }\n\n async getOpenScreen() {\n return await this._dna_request<DNAScreenResponse>(\"config/getOpenScreen\")\n }\n\n async getPublicKey() {\n return await this._dna_request<{ key: string }>(\"config/getRsaPublicKey\")\n }\n\n async getUserGame() {\n return await this._dna_request<DNAFollowGameIdBean>(\"/user/getUserGame\")\n }\n\n async getWikiData() {\n return await this._dna_request<DNAWikiVoEntity>(\"config/getGameWiki\")\n }\n\n async haveOfficialRole() {\n return await this._dna_request<DNAHaveOfficialRoleBean>(\"role/haveOfficialRole\")\n }\n\n async isRedPoint() {\n return await this._dna_request<DNAIsRedPointBean>(\"/forum/dynamic/isRedPoint\")\n }\n\n async login(loginType: number, sdkToken: string, code: string, gameList: string, mobile: string) {\n return await this._dna_request<DNAUserDataBean>(\"user/sdkLogin\", { loginType, sdkToken, code, gameList, mobile })\n }\n\n async oneTapLoginRestriction() {\n return await this._dna_request(\"user/oneTapLoginRestriction\")\n }\n\n async recommendConfig() {\n return await this._dna_request<DNARecommendConfig>(\"forum/recommend/config\")\n }\n\n async refreshToken(refreshToken: string) {\n return await this._dna_request<DNATokenBean>(\"user/refreshToken\", { refreshToken })\n }\n\n async register(code: string, devCode: string, gameList: string, mobile: string, password: string) {\n return await this._dna_request<DNAUserDataBean>(\"user/register\", { code, devCode, gameList, mobile, password })\n }\n\n async saveUserInfo(gender: number | null, headCode: string, headUrl: string, userName: string) {\n return await this._dna_request<DNAUserHeadResponse>(\"user/saveUserInfo\", { gender, headCode, headUrl, userName })\n }\n\n async sendSms(mobile: string, vJson: string, isCaptcha: number | null) {\n return await this._dna_request(\"user/getSmsCode\", { mobile, vJson, isCaptcha })\n }\n\n async signature(newSignature: string) {\n return await this._dna_request(\"user/edit/signature\", { newSignature })\n }\n\n async updateHeadCode(headCode: string) {\n return await this._dna_request<DNAUserHeadResponse>(\"/user/updateHeadCode\", { headCode })\n }\n\n async updateHeadUrl(headUrl: string) {\n return await this._dna_request(\"user/updateHeadUrl\", { headUrl })\n }\n\n async updateProfileBg(bgUrl: string) {\n return await this._dna_request(\"user/updateBg\", { bgUrl })\n }\n\n async uploadImage(t: string, part: FormData) {\n return await this._dna_request<string[]>(\"user/img/uploadHead\", part, { sign: true })\n }\n\n async uploadProfileBg(t: string, part: FormData) {\n return await this._dna_request<string[]>(\"user/img/uploadMineBg\", part, { sign: true })\n }\n\n async getEmoji() {\n return await this._dna_request<DNAEmojiConfigBean[]>(\"config/getEmoji\")\n }\n\n async getGameConfig() {\n return await this._dna_request<DNAGameConfigResponse[]>(\"config/getGameConfig\")\n }\n\n async getGameHeadCode() {\n return await this._dna_request<DNAGameNewHeadBean[]>(\"user/getGameHeadCode\")\n }\n}\n",
|
|
14
|
+
"import { DNASubModule, DNABaseAPI } from \"./base\"\nimport {\n DNAAliProductConfigBean,\n DNAAliProductListBean,\n DNAApplyStatusBean,\n DNACreatorDescriptionBean,\n DNACustomCreativeDesc,\n DNAGoldBuyBean,\n DNAGoldDrawBean,\n DNAGoldGoodsEntity,\n DNAGoldRealBean,\n DNAGoldRecordEntity,\n DNAGoldTotalBean,\n DNALookPageBean,\n DNALuckyDrawBean,\n DNAUserExperienceRecordEntity,\n DNAUserGameLevelEntity,\n DNAUserTaskProcessEntity,\n DNAWinListBean,\n DNACommonBooleanBean,\n DNAUserAddressBean,\n} from \"../type-generated\"\n\nexport class UserGrowingAPI extends DNASubModule {\n constructor(base: DNABaseAPI) {\n super(base)\n }\n async addAddress(receiverName: string, receiverMobile: string, receiverAddress: string) {\n return await this._dna_request(\"user/more/userAddressAdd\", { receiverName, receiverMobile, receiverAddress })\n }\n\n async apply(\n type: number,\n id: number | null,\n concatWay: string,\n otherPlatform: string,\n otherPlatformUrl: string,\n otherPlatformFans: string,\n materialUrl: string,\n gameId: number | null,\n ) {\n return await this._dna_request<DNAApplyStatusBean>(\"user/creator/apply\", {\n type,\n id,\n concatWay,\n otherPlatform,\n otherPlatformUrl,\n otherPlatformFans,\n materialUrl,\n gameId,\n })\n }\n\n async awardList(drawId: number) {\n return await this._dna_request<DNAWinListBean>(\"/encourage/draw/awardList\", { drawId })\n }\n\n async awardWin(drawId: number, fullName: string, mobile: string, address: string) {\n return await this._dna_request(\"/encourage/draw/awardWin\", { drawId, fullName, mobile, address })\n }\n\n async buyGold(drawId: number, count: number) {\n return await this._dna_request<DNAGoldBuyBean>(\"/encourage/draw/buy\", { drawId, count })\n }\n\n async buyProduct(address: string, fullName: string, mobile: string, productId: number) {\n return await this._dna_request(\"/encourage/store/buyProduct\", { address, fullName, mobile, productId })\n }\n\n async deleteAddress(addressId: number) {\n return await this._dna_request<DNACommonBooleanBean>(\"user/more/deleteUserAddress\", { addressId })\n }\n\n async drawDetail(drawId: number) {\n return await this._dna_request<DNAGoldDrawBean>(\"/encourage/draw/detail\", { drawId })\n }\n\n async editAddress(addressId: number, receiverName: string, receiverMobile: string, receiverAddress: string) {\n return await this._dna_request<DNACommonBooleanBean>(\"user/more/userAddressEdit\", {\n addressId,\n receiverName,\n receiverMobile,\n receiverAddress,\n })\n }\n\n async getAliProductConfig() {\n return await this._dna_request<DNAAliProductConfigBean>(\"encourage/store/ali/getAliStoreConfigAndBanner\")\n }\n\n async getAliProductList(gameId: number | null, pageIndex: number, pageSize: number) {\n return await this._dna_request<DNAAliProductListBean>(\"encourage/store/ali/productList\", { gameId, pageIndex, pageSize })\n }\n\n async getApplyPage() {\n return await this._dna_request<DNACustomCreativeDesc>(\"user/creator/getApplyPage\")\n }\n\n async getExpLogsList(gameId: number, pageIndex: number, pageSize: number) {\n return await this._dna_request<DNAUserExperienceRecordEntity>(\"/encourage/level/getExpLogs\", { gameId, pageIndex, pageSize })\n }\n\n async getGameCreator() {\n return await this._dna_request<DNACreatorDescriptionBean>(\"config/identification/getGameCreator\")\n }\n\n async getGoldDetailList(pageIndex: number, pageSize: number, type: number, storeType: number) {\n return await this._dna_request<DNAGoldRecordEntity>(\"/encourage/gold/getGoldLogs\", { pageIndex, pageSize, type, storeType })\n }\n\n async getProductList(gameId: number | null, pageIndex: number, pageSize: number, storeType: number) {\n return await this._dna_request<DNAGoldGoodsEntity>(\"/encourage/store/productList\", { gameId, pageIndex, pageSize, storeType })\n }\n\n async getTotalGold(type?: number) {\n if (type !== undefined) {\n return await this._dna_request<DNAGoldTotalBean>(\"encourage/gold/getTotalGold\", { type })\n }\n return await this._dna_request<DNAGoldTotalBean>(\"/encourage/gold/getTotalGold\")\n }\n\n async getUserAddress(userId: number, type: number) {\n return await this._dna_request<DNAUserAddressBean>(\"user/more/getUserAddress\", { userId, type })\n }\n\n async getUserGameLevel(gameId: number | null, ifProcess: number, otherUserId: number | null) {\n return await this._dna_request<DNAUserGameLevelEntity>(\"/encourage/level/getUserGameLevelDetail\", {\n gameId,\n ifProcess,\n otherUserId,\n })\n }\n\n async getUserGameTaskProcess(gameId: number, userId: number) {\n return await this._dna_request<DNAUserTaskProcessEntity>(\"/encourage/level/getTaskProcess\", { gameId, userId })\n }\n\n async list(pageIndex: number, pageSize: number, queryType: number | null, gameId: number | null) {\n return await this._dna_request<DNALuckyDrawBean>(\"encourage/draw/list\", { pageIndex, pageSize, queryType, gameId })\n }\n\n async page() {\n return await this._dna_request<DNALookPageBean>(\"user/creator/page\")\n }\n\n async productDetail(productId: number) {\n return await this._dna_request<DNAGoldRealBean>(\"/encourage/store/productDetail\", { productId })\n }\n\n async setDefaultAddress(addressId: number) {\n return await this._dna_request<DNACommonBooleanBean>(\"user/more/setDefaultAddress\", { addressId })\n }\n\n async uploadImage(t: string, part: FormData) {\n return await this._dna_request<string[]>(\"user/img/uploadHead\", part, { sign: true })\n }\n}\n",
|
|
15
|
+
"import { DNASubModule, DNABaseAPI } from \"./base\"\n\nexport interface DNAMapMatterCategorizeOption {\n icon: string\n id: number\n matters: DNAMapMatter[]\n name: string\n sort?: number\n}\n\nexport interface DNAMatterCategorizeDetail {\n icon: string\n id: number\n matters: DNAMapMatterDetail[]\n name: string\n sort?: number\n}\n\nexport interface DNAMapMatter {\n icon: string\n id: number\n mapMatterCategorizeId: number\n name: string\n sort: number\n}\n\nexport interface DNAMapCategorizeListRes {\n list: DNAMatterCategorizeList[]\n}\n\nexport interface DNAMatterCategorizeList {\n id: number\n maps: DNAMap[]\n name: string\n}\n\nexport interface DNAMapDetailRes {\n floors: DNAMapFloor[]\n matterCategorizes: DNAMatterCategorizeDetail[]\n map: DNAMap\n userSites: DNAMapSite[]\n}\n\nexport interface DNAMap {\n id: number\n name: string\n pid?: number\n}\n\nexport interface DNAMapMatterDetail extends DNAMapMatter {\n sites: DNAMapSite[]\n}\n\nexport interface DNAMapSite {\n id: number\n isHide: number\n mapFloorId: number\n mapId: number\n mapMatterId: number\n x: number\n y: number\n}\n\nexport interface DNAMapFloor {\n floor: number\n id: number\n name: string\n pic: string\n}\n\nexport interface DNAMapSiteDetailRes {\n contributes: DNAMapContribute[]\n description: string\n id: number\n isDel: number\n isHide: number\n mapFloorId: number\n mapId: number\n mapMatterCategorizeId: number\n mapMatterId: number\n pic: string\n script: string\n url: string\n urlDesc: string\n urlIcon: string\n x: number\n y: number\n}\n\ninterface DNAMapContribute {\n userHeadUrl: string\n userId: string\n userName: string\n}\n\nexport interface DNAEmoji {\n content: string[]\n gameId: number\n icon: string\n size: number\n title: string\n url: string\n}\n\nexport class H5API extends DNASubModule {\n constructor(base: DNABaseAPI) {\n super(base)\n }\n async getMapMatterCategorizeOptions() {\n return await this._dna_request_h5<DNAMapMatterCategorizeOption[]>(\"map/matter/categorize/getOptions\")\n }\n\n async getMapCategorizeList() {\n return await this._dna_request_h5<DNAMapCategorizeListRes>(\"map/categorize/list\")\n }\n\n async getMapDetail(id: number) {\n return await this._dna_request_h5<DNAMapDetailRes>(\"map/detail\", { id })\n }\n\n async getMapSiteDetail(id: number) {\n return await this._dna_request_h5<DNAMapSiteDetailRes>(\"map/site/detail\", { id })\n }\n\n async getEmojiList() {\n return await this._dna_request_h5<DNAEmoji[]>(\"config/getEmoji\")\n }\n}\n",
|
|
16
|
+
"export interface DNARoleForToolInstance {\n id: number\n name: string\n code: string\n on: number\n}\n\nexport interface DNARoleForToolInstanceInfo {\n instances: DNARoleForToolInstance[]\n}\n\nexport enum PostContentType {\n TEXT = 1,\n IMAGE = 2,\n VIDEO = 5,\n}\n",
|
|
17
|
+
"export { TimeBasicResponse, RespCode } from \"./TimeBasicResponse\"\nexport { DNABaseAPI, DNASubModule } from \"./modules/base\"\nexport { GameAPI } from \"./modules/game\"\nexport { HomeAPI } from \"./modules/home\"\nexport { ProfileAPI } from \"./modules/profile\"\nexport { SettingAPI } from \"./modules/setting\"\nexport { TrendAPI } from \"./modules/trend\"\nexport { UserAPI } from \"./modules/user\"\nexport { UserGrowingAPI } from \"./modules/usergrowing\"\nexport * from \"./modules/h5\"\nexport * from \"./modules/types\"\nexport * from \"./type-generated\"\nexport * from \"./modules/utils\"\n\nimport { DNABaseAPI } from \"./modules/base\"\nimport { GameAPI } from \"./modules/game\"\nimport { HomeAPI } from \"./modules/home\"\nimport { ProfileAPI } from \"./modules/profile\"\nimport { SettingAPI } from \"./modules/setting\"\nimport { TrendAPI } from \"./modules/trend\"\nimport { UserAPI } from \"./modules/user\"\nimport { UserGrowingAPI } from \"./modules/usergrowing\"\nimport { H5API } from \"./modules/h5\"\n\nconst DNA_GAME_ID = 268\n\n/**\n * DNA API类,用于与DNA游戏服务器交互\n */\nexport class DNAAPI extends DNABaseAPI {\n game: GameAPI\n home: HomeAPI\n profile: ProfileAPI\n setting: SettingAPI\n trend: TrendAPI\n user: UserAPI\n userGrowing: UserGrowingAPI\n h5: H5API\n\n constructor({\n dev_code = \"\",\n token = \"\",\n ...options\n }: { dev_code?: string; token?: string; fetchFn?: typeof fetch; is_h5?: boolean; rsa_public_key?: string } = {}) {\n super(dev_code, token, options)\n\n this.game = new GameAPI(this)\n this.home = new HomeAPI(this)\n this.profile = new ProfileAPI(this)\n this.setting = new SettingAPI(this)\n this.trend = new TrendAPI(this)\n this.user = new UserAPI(this)\n this.userGrowing = new UserGrowingAPI(this)\n this.h5 = new H5API(this)\n }\n\n /**\n * 手动初始化 API 配置(获取签名配置等)\n */\n async initialize(): Promise<void> {\n await this.initializeSignConfig()\n }\n\n get GAME_ID() {\n return DNA_GAME_ID\n }\n //#region Game 模块便捷方法\n async getMhSwitchStatus() {\n return await this.game.getMhSwitchStatus()\n }\n\n async updateMhSwitchStatus(config: string) {\n return await this.game.updateMhSwitchStatus(config)\n }\n\n async soulTask() {\n return await this.game.soulTask()\n }\n async defaultRoleForTool(otherUserId?: string, type: number = 1) {\n return await this.game.defaultRoleForTool(otherUserId, type)\n }\n\n async getRoleDetail(char_id: string, char_eid: string, otherUserId?: string) {\n return await this.game.getRoleDetail(char_id, char_eid, otherUserId)\n }\n\n async getWeaponDetail(weapon_id: string, weapon_eid: string, otherUserId?: string) {\n return await this.game.getWeaponDetail(weapon_id, weapon_eid, otherUserId)\n }\n\n async getShortNoteInfo() {\n return await this.game.getShortNoteInfo()\n }\n //#endregion\n //#region Home 模块便捷方法\n async getPostList(forumId: number = 48, pageIndex: number = 1, pageSize: number = 20, searchType: number = 1, timeType: number = 0) {\n return await this.home.getPostList(forumId, pageIndex, pageSize, searchType, timeType)\n }\n\n async getPostDetail(postId: string) {\n return await this.home.getPostDetail(postId)\n }\n\n async getPostByTopic(\n topicId: number = 177,\n pageIndex: number = 1,\n pageSize: number = 20,\n searchType: number = 1,\n timeType: number = 0,\n ) {\n return await this.home.getPostByTopic(topicId, pageIndex, pageSize, searchType, timeType)\n }\n\n async getTaskProcess() {\n return await this.home.getTaskProcess()\n }\n\n async haveSignIn() {\n return await this.home.haveSignIn()\n }\n\n async signCalendar() {\n return await this.home.signCalendar()\n }\n\n async gameSign(dayAwardId: number, period: number) {\n return await this.home.gameSignIn(dayAwardId, period)\n }\n\n async bbsSign() {\n return await this.home.bbsSign()\n }\n\n async getRoleList() {\n return await this.profile.roleManager()\n }\n\n async adminAdjustScore(postId: number, gameForumId: number, weight: string) {\n return await this.home.adminAdjustScore(postId, gameForumId, weight)\n }\n\n async adminDelete(post: { postId: number; gameId?: number; gameForumId: number }, content: string, reasonCode: number) {\n return await this.home.adminDelete(post, content, reasonCode)\n }\n\n async adminMovePost(\n post: { postId: number; gameId?: number; gameForumId: number },\n newGameId: number,\n newForumId: number,\n newTopicIdStr: string,\n ) {\n return await this.home.adminMovePost(post, newGameId, newForumId, newTopicIdStr)\n }\n\n async adminRefreshTime(post: { postId: number; gameId?: number; gameForumId: number }, refresh: number) {\n return await this.home.adminRefreshTime(post, refresh)\n }\n\n async blockList() {\n return await this.home.blockList()\n }\n\n async blockOther(blockPostId: number, blockUserId: string, type: number) {\n return await this.home.blockOther(blockPostId, blockUserId, type)\n }\n\n async collect(postId: number, toUserId: string, operateType = 1) {\n return await this.home.collect(postId, toUserId, operateType)\n }\n\n async commentDelete(\n comment: { id: number; gameId: number; gameForumId: number },\n entityType: number,\n content: string,\n reasonCode: number,\n ) {\n return await this.home.commentDelete(comment, entityType, content, reasonCode)\n }\n\n async createComment(post: { userId: string; postId: string; gameForumId: number }, content: string) {\n return await this.home.createComment(post, content)\n }\n\n async createReply(post: { userId: string; postId: string; postCommentId: string; gameForumId: number }, content: string) {\n return await this.home.createReply(post, content)\n }\n\n async createReplyList(\n post: { userId: string; postId: string; postCommentId: string; postCommentReplyId: string; gameForumId: number },\n content: string,\n ) {\n return await this.home.createReplyList(post, content)\n }\n\n async deletePost(deleteType: number, id: number) {\n return await this.home.deletePost(deleteType, id)\n }\n\n async followUser(followUserId: string, unfollow?: boolean) {\n return await this.home.followUser(followUserId, unfollow)\n }\n\n async getFollowState(followUserId: string) {\n return await this.home.getFollowState(followUserId)\n }\n\n async getDoujin(forumId: number) {\n return await this.home.getDoujin(forumId)\n }\n\n async getExchange(forumId: number) {\n return await this.home.getExchange(forumId)\n }\n\n async getGameBanner(gameId = DNA_GAME_ID) {\n return await this.home.getGameBanner(gameId)\n }\n\n async getPostCommentList(postId: number, pageIndex = 1, pageSize = 20, isOnlyPublisher = 0) {\n return await this.home.getPostCommentList(postId, pageIndex, pageSize, isOnlyPublisher)\n }\n\n async getRankList(forumId: number) {\n return await this.home.getRankList(forumId)\n }\n\n async getRecommendPosts(gameId = DNA_GAME_ID, pageIndex = 1, pageSize = 20) {\n return await this.home.getRecommendPosts(gameId, pageIndex, pageSize)\n }\n\n async getReplyList(postId: number, postCommentId: number, pageIndex = 1, pageSize = 20) {\n return await this.home.getReplyList(postId, postCommentId, pageIndex, pageSize)\n }\n\n async getStatistics(gameId = DNA_GAME_ID) {\n return await this.home.getStatistics(gameId)\n }\n\n async getTips() {\n return await this.home.getTips()\n }\n\n async getWalkthrough(forumId: number) {\n return await this.home.getWalkthrough(forumId)\n }\n\n async hotList(type = 1, gameId = DNA_GAME_ID) {\n return await this.home.hotList(type, gameId)\n }\n\n async isRedPoint() {\n return await this.home.isRedPoint()\n }\n\n async likePost(post: { gameForumId: string; postId: string; postType: string; userId: string }) {\n return await this.home.like(post)\n }\n\n async lockPost(post: { postId: number; gameId?: number; gameForumId: number }, operateType: number) {\n return await this.home.lockPost(post, operateType)\n }\n\n async postDownOrUp(post: { postId: number; gameId?: number; gameForumId: number }, operateType: number) {\n return await this.home.postDownOrUp(post, operateType)\n }\n\n async postElite(post: { postId: number; gameId?: number; gameForumId: number }, operateType: number) {\n return await this.home.postElite(post, operateType)\n }\n\n async postHide(post: { postId: number; gameId?: number; gameForumId: number }, operateType: number) {\n return await this.home.postHide(post, operateType)\n }\n\n async reRank(post: { postId: number; gameId?: number; gameForumId: number }, weight: number) {\n return await this.home.reRank(post, weight)\n }\n\n async receiveLog(periodId: number, pageIndex: number, pageSize: number) {\n return await this.home.receiveLog(periodId, pageIndex, pageSize)\n }\n\n async recommendList(recIndex: number, newIndex: number, size: number, history: string, gameId = DNA_GAME_ID) {\n return await this.home.recommendList(recIndex, newIndex, size, history, gameId)\n }\n\n async report(\n { commentId = 0, postId = 0, replyId = 0 }: { commentId?: number; postId?: number; replyId?: number },\n reportReason = 1,\n reportType = 1,\n ) {\n return await this.home.report({ commentId, postId, replyId }, reportReason, reportType)\n }\n\n async searchPost(keyword: string, pageIndex: number, pageSize: number, gameId = DNA_GAME_ID, searchType = 1) {\n return await this.home.searchPost(keyword, pageIndex, pageSize, gameId, searchType)\n }\n\n async searchTopic(keyword: string, pageIndex: number, pageSize = 20, gameId = DNA_GAME_ID) {\n return await this.home.searchTopic(keyword, pageIndex, pageSize, gameId)\n }\n\n async searchUser(keyword: string, pageIndex: number, pageSize: number) {\n return await this.home.searchUser(keyword, pageIndex, pageSize)\n }\n\n async shareTask() {\n return await this.home.shareTask()\n }\n\n async strongRecommend(post: { postId: number; gameId?: number; gameForumId: number }, operateType = 1) {\n return await this.home.strongRecommend(post, operateType)\n }\n\n async viewCommunity() {\n return await this.home.viewCommunity()\n }\n\n async viewCount(postId: number, gameId = DNA_GAME_ID) {\n return await this.home.viewCount(postId, gameId)\n }\n //#endregion\n //#region User 模块便捷方法\n async loginLog() {\n return await this.user.loginLog()\n }\n\n async login(mobile: string, code: string) {\n return await this.user.login(1, \"\", code, DNA_GAME_ID.toString(), mobile)\n }\n\n async getSmsCode(mobile: string, vJson: string) {\n return await this.user.sendSms(mobile, vJson, 1)\n }\n\n async getMine() {\n return await this.profile.mine(\"\", 2, 0)\n }\n\n async getOtherMine(userId = \"709542994134436647\") {\n return await this.profile.mine(userId, 2, 0)\n }\n async canEditNickName() {\n return await this.user.canEditNickName()\n }\n\n async cleanToken() {\n return await this.user.cleanToken()\n }\n\n async editGender(gender: number) {\n return await this.user.editGender(gender)\n }\n\n async editNickName(userName: string) {\n return await this.user.editNickName(userName)\n }\n\n async getCommonConfig() {\n return await this.user.getCommonConfig()\n }\n\n async getConfig() {\n return await this.user.getConfig()\n }\n\n async getConfigSwitch() {\n return await this.user.getConfigSwitch()\n }\n\n async getModeratorPermission() {\n return await this.user.getModeratorPermission()\n }\n\n async getOpenScreen() {\n return await this.user.getOpenScreen()\n }\n\n async getPublicKey() {\n return await this.user.getPublicKey()\n }\n\n async getUserGame() {\n return await this.user.getUserGame()\n }\n\n async getWikiData() {\n return await this.user.getWikiData()\n }\n\n async haveOfficialRole() {\n return await this.user.haveOfficialRole()\n }\n\n async oneTapLoginRestriction() {\n return await this.user.oneTapLoginRestriction()\n }\n\n async recommendConfig() {\n return await this.user.recommendConfig()\n }\n\n async refreshToken(refreshToken: string) {\n return await this.user.refreshToken(refreshToken)\n }\n\n async register(code: string, devCode: string, gameList: string, mobile: string, password: string) {\n return await this.user.register(code, devCode, gameList, mobile, password)\n }\n\n async saveUserInfo(gender: number | null, headCode: string, headUrl: string, userName: string) {\n return await this.user.saveUserInfo(gender, headCode, headUrl, userName)\n }\n\n async signature(newSignature: string) {\n return await this.user.signature(newSignature)\n }\n\n async updateHeadCode(headCode: string) {\n return await this.user.updateHeadCode(headCode)\n }\n\n async updateHeadUrl(headUrl: string) {\n return await this.user.updateHeadUrl(headUrl)\n }\n\n async updateProfileBg(bgUrl: string) {\n return await this.user.updateProfileBg(bgUrl)\n }\n\n async uploadUserImage(t: string, part: FormData) {\n return await this.user.uploadImage(t, part)\n }\n\n async uploadProfileBg(t: string, part: FormData) {\n return await this.user.uploadProfileBg(t, part)\n }\n\n async getEmoji() {\n return await this.user.getEmoji()\n }\n\n async getGameConfig() {\n return await this.user.getGameConfig()\n }\n\n async getGameHeadCode() {\n return await this.user.getGameHeadCode()\n }\n\n //#endregion\n //#region H5 模块便捷方法\n async getMapCategorizeList() {\n return await this.h5.getMapCategorizeList()\n }\n\n async getMapDetail(id: number) {\n return await this.h5.getMapDetail(id)\n }\n\n async getMapSiteDetail(id: number) {\n return await this.h5.getMapSiteDetail(id)\n }\n\n async getEmojiList() {\n return await this.h5.getEmojiList()\n }\n\n async getMapMatterCategorizeOptions() {\n return await this.h5.getMapMatterCategorizeOptions()\n }\n //#endregion\n //#region Profile 模块便捷方法\n async blackUser(toUserId: string, type: number) {\n return await this.profile.blackUser(toUserId, type)\n }\n\n async cleanFansNew(type: number, userFollowId: string) {\n return await this.profile.cleanFansNew(type, userFollowId)\n }\n\n async defaultRole(otherUserId?: string, type = 1) {\n return await this.profile.defaultRole(otherUserId, type)\n }\n\n async deleteRole(roleBoundId: string) {\n return await this.profile.deleteRole(roleBoundId)\n }\n\n async draftDelete(draftId: string) {\n return await this.profile.draftDelete(draftId)\n }\n\n async fans(otherUserId: string, pageNo: number, pageSize: number, type: number) {\n return await this.profile.fans(otherUserId, pageNo, pageSize, type)\n }\n\n async fastBind() {\n return await this.profile.fastBind()\n }\n\n async follow(otherUserId: string, pageNo: number, pageSize: number, type: number) {\n return await this.profile.follow(otherUserId, pageNo, pageSize, type)\n }\n\n async getApplyStatus() {\n return await this.profile.getApplyStatus()\n }\n\n async getDraftList(pageIndex: number, pageSize: number) {\n return await this.profile.getDraftList(pageIndex, pageSize)\n }\n\n async getMineComment(otherUserId: string, pageIndex: number, pageSize: number, type: number) {\n return await this.profile.getMineComment(otherUserId, pageIndex, pageSize, type)\n }\n\n async getMinePost(otherUserId: string, pageIndex: number, pageSize: number, searchType: number, type: number, postType?: number) {\n return await this.profile.getMinePost(otherUserId, pageIndex, pageSize, searchType, type, postType)\n }\n\n async getProfileNotifySwitch() {\n return await this.profile.getNotifySwitch()\n }\n\n async historyView(pageIndex: number, pageSize: number) {\n return await this.profile.historyView(pageIndex, pageSize)\n }\n\n async likeProfilePost(data: {\n forumId: number\n gameId: number\n likeType: number\n operateType: number\n postCommentId: number\n postCommentReplyId: number\n postId: number\n postType: number\n toUserId: string\n }) {\n return await this.profile.like(data)\n }\n\n async manualBound(roleId: string, type: number, code: string) {\n return await this.profile.manualBound(roleId, type, code)\n }\n\n async mine(otherUserId: string, searchType: number, type: number, postType?: number) {\n return await this.profile.mine(otherUserId, searchType, type, postType)\n }\n\n async mineV2(otherUserId: string) {\n return await this.profile.mineV2(otherUserId)\n }\n\n async moderatorByGame(gameId: number) {\n return await this.profile.moderatorByGame(gameId)\n }\n\n async muteCancel(toUserId: string) {\n return await this.profile.muteCancel(toUserId)\n }\n\n async muteUser(toUserId: string, gameIdStr: string, type: number, reason: number, content: string) {\n return await this.profile.muteUser(toUserId, gameIdStr, type, reason, content)\n }\n\n async resetDefault(roleBoundId: string) {\n return await this.profile.resetDefault(roleBoundId)\n }\n\n //#endregion\n //#region Setting 模块便捷方法\n async addAddress(receiverName: string, receiverMobile: string, receiverAddress: string) {\n return await this.setting.addAddress(receiverName, receiverMobile, receiverAddress)\n }\n\n async cancelCode(code: string) {\n return await this.setting.cancelCode(code)\n }\n\n async cancel(cancelType: number, operateType: number, position: string, cancelReason: number | null, reasonDetail: string) {\n return await this.setting.cancel(cancelType, operateType, position, cancelReason, reasonDetail)\n }\n\n async deleteAddress(addressId: number) {\n return await this.setting.deleteAddress(addressId)\n }\n\n async editAddress(addressId: number, receiverName: string, receiverMobile: string, receiverAddress: string) {\n return await this.setting.editAddress(addressId, receiverName, receiverMobile, receiverAddress)\n }\n\n async feedback(listPic: string, proDesc: string, mobile: string, isLogin: number) {\n return await this.setting.feedback(listPic, proDesc, mobile, isLogin)\n }\n\n async getCancelStatus() {\n return await this.setting.getCancelStatus()\n }\n\n async getPrivateSet() {\n return await this.setting.getPrivateSet()\n }\n\n async getUserAddress(userId: number, type: number) {\n return await this.setting.getUserAddress(userId, type)\n }\n\n async getUserBlackList(pageIndex: number, pageSize: number) {\n return await this.setting.getUserBlackList(pageIndex, pageSize)\n }\n\n async msgListDetail(pageNo: number, pageSize: number, type: number) {\n return await this.setting.msgListDetail(pageNo, pageSize, type)\n }\n\n async postListDetail(pageNo: number, pageSize: number, type: number) {\n return await this.setting.postListDetail(pageNo, pageSize, type)\n }\n\n async privateSet(operateType: number, option: number) {\n return await this.setting.privateSet(operateType, option)\n }\n\n async sendSms(mobile: string, timeStamp: string, type: number) {\n return await this.setting.sendSms(mobile, timeStamp, type)\n }\n\n async setDefaultAddress(addressId: number) {\n return await this.setting.setDefaultAddress(addressId)\n }\n\n async setNotifySwitch(operateType: number, switchType: number) {\n return await this.setting.setNotifySwitch(operateType, switchType)\n }\n\n async userUploadImage(t: string, parts: FormData) {\n return await this.setting.userUploadImage(t, parts)\n }\n\n //#endregion\n //#region Trend 模块便捷方法\n async draftSave(\n content: string,\n draftId: string,\n h5Content: string,\n postTitle: string,\n postType: number,\n gameId: number,\n videoReUpload: number,\n ) {\n return await this.trend.draftSave(content, draftId, h5Content, postTitle, postType, gameId, videoReUpload)\n }\n\n async getConfigTopicByGameId(name: string, showType: number) {\n return await this.trend.getConfigTopicByGameId(name, showType)\n }\n\n async getPostPublishPage() {\n return await this.trend.getPostPublishPage()\n }\n\n async getRecommend(history: string, pageSize: number) {\n return await this.trend.getRecommend(history, pageSize)\n }\n\n async getVodToken(fileName: string, title: string) {\n return await this.trend.getVodToken(fileName, title)\n }\n\n async trendList(pageIndex: number, pageSize: number, userId: string) {\n return await this.trend.list(pageIndex, pageSize, userId)\n }\n\n async parseLink(link: string) {\n return await this.trend.parseLink(link)\n }\n\n async posAdminEdit(\n content: string,\n gameForumId: number,\n h5Content: string,\n postId: string,\n postTitle: string,\n topics: string,\n postType: number,\n gameId: number,\n videoReUpload: number,\n ) {\n return await this.trend.posAdminEdit(content, gameForumId, h5Content, postId, postTitle, topics, postType, gameId, videoReUpload)\n }\n\n async postEdit(\n content: string,\n gameForumId: number,\n h5Content: string,\n postId: string,\n postTitle: string,\n topics: string,\n postType: number,\n videoReUpload: number,\n ) {\n return await this.trend.postEdit(content, gameForumId, h5Content, postId, postTitle, topics, postType, videoReUpload)\n }\n\n async postPublish(\n content: string,\n draftId: string,\n gameForumId: number,\n gameId: number,\n h5Content: string,\n postTitle: string,\n postType: number,\n topics: string,\n ) {\n return await this.trend.postPublish(content, draftId, gameForumId, gameId, h5Content, postTitle, postType, topics)\n }\n\n async safeCheck(url: string) {\n return await this.trend.safeCheck(url)\n }\n\n async uploadTrendImage(t: string, parts: FormData, type: string) {\n return await this.trend.uploadImage(t, parts, type)\n }\n\n async videoPostPublish(\n content: string,\n draftId: string,\n gameForumId: number,\n gameId: number,\n h5Content: string,\n postTitle: string,\n postType: number,\n topics: string,\n ) {\n return await this.trend.videoPostPublish(content, draftId, gameForumId, gameId, h5Content, postTitle, postType, topics)\n }\n\n //#endregion\n //#region UserGrowing 模块便捷方法\n async apply(\n type: number,\n id: number | null,\n concatWay: string,\n otherPlatform: string,\n otherPlatformUrl: string,\n otherPlatformFans: string,\n materialUrl: string,\n gameId: number | null,\n ) {\n return await this.userGrowing.apply(type, id, concatWay, otherPlatform, otherPlatformUrl, otherPlatformFans, materialUrl, gameId)\n }\n\n async awardList(drawId: number) {\n return await this.userGrowing.awardList(drawId)\n }\n\n async awardWin(drawId: number, fullName: string, mobile: string, address: string) {\n return await this.userGrowing.awardWin(drawId, fullName, mobile, address)\n }\n\n async buyGold(drawId: number, count: number) {\n return await this.userGrowing.buyGold(drawId, count)\n }\n\n async buyProduct(address: string, fullName: string, mobile: string, productId: number) {\n return await this.userGrowing.buyProduct(address, fullName, mobile, productId)\n }\n\n async drawDetail(drawId: number) {\n return await this.userGrowing.drawDetail(drawId)\n }\n\n async getAliProductConfig() {\n return await this.userGrowing.getAliProductConfig()\n }\n\n async getAliProductList(gameId: number | null, pageIndex: number, pageSize: number) {\n return await this.userGrowing.getAliProductList(gameId, pageIndex, pageSize)\n }\n\n async getApplyPage() {\n return await this.userGrowing.getApplyPage()\n }\n\n async getExpLogsList(gameId: number, pageIndex: number, pageSize: number) {\n return await this.userGrowing.getExpLogsList(gameId, pageIndex, pageSize)\n }\n\n async getGameCreator() {\n return await this.userGrowing.getGameCreator()\n }\n\n async getGoldDetailList(pageIndex: number, pageSize: number, type: number, storeType: number) {\n return await this.userGrowing.getGoldDetailList(pageIndex, pageSize, type, storeType)\n }\n\n async getProductList(gameId: number | null, pageIndex: number, pageSize: number, storeType: number) {\n return await this.userGrowing.getProductList(gameId, pageIndex, pageSize, storeType)\n }\n\n async getTotalGold(type?: number) {\n return await this.userGrowing.getTotalGold(type)\n }\n\n async getUserGameLevel(gameId: number | null, ifProcess: number, otherUserId: number | null) {\n return await this.userGrowing.getUserGameLevel(gameId, ifProcess, otherUserId)\n }\n\n async getUserGameTaskProcess(gameId: number, userId: number) {\n return await this.userGrowing.getUserGameTaskProcess(gameId, userId)\n }\n\n async list(pageIndex: number, pageSize: number, queryType: number | null, gameId: number | null) {\n return await this.userGrowing.list(pageIndex, pageSize, queryType, gameId)\n }\n\n async page() {\n return await this.userGrowing.page()\n }\n\n async productDetail(productId: number) {\n return await this.userGrowing.productDetail(productId)\n }\n\n //#endregion\n}\n"
|
|
6
18
|
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
19
|
+
"mappings": "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",
|
|
20
|
+
"debugId": "BB32C0FFB5164BC964756E2164756E21",
|
|
9
21
|
"names": []
|
|
10
22
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { TimeBasicResponse } from "../TimeBasicResponse";
|
|
2
|
+
import { RequestOptions, HeadersPayload } from "./utils";
|
|
3
|
+
export declare class DNABaseAPI {
|
|
4
|
+
dev_code: string;
|
|
5
|
+
token: string;
|
|
6
|
+
fetchFn?: typeof fetch;
|
|
7
|
+
is_h5: boolean;
|
|
8
|
+
RSA_PUBLIC_KEY: string;
|
|
9
|
+
BASE_URL: string;
|
|
10
|
+
protected uploadKey: string;
|
|
11
|
+
sign_api_urls: Set<string>;
|
|
12
|
+
constructor(dev_code: string, token?: string, options?: {
|
|
13
|
+
fetchFn?: typeof fetch;
|
|
14
|
+
is_h5?: boolean;
|
|
15
|
+
rsa_public_key?: string;
|
|
16
|
+
});
|
|
17
|
+
getRsaPublicKey(): Promise<string>;
|
|
18
|
+
getHeaders(options?: {
|
|
19
|
+
payload?: Record<string, any> | string | FormData;
|
|
20
|
+
exparams?: Record<string, any>;
|
|
21
|
+
dev_code?: string;
|
|
22
|
+
refer?: boolean;
|
|
23
|
+
token?: string;
|
|
24
|
+
tokenSig?: boolean;
|
|
25
|
+
h5?: boolean;
|
|
26
|
+
}): Promise<HeadersPayload>;
|
|
27
|
+
needSign(url: string): Promise<boolean>;
|
|
28
|
+
initializeSignConfig(): Promise<void>;
|
|
29
|
+
_dna_request_h5<T = any>(url: string, data?: any, options?: RequestOptions): Promise<TimeBasicResponse<T>>;
|
|
30
|
+
_dna_request<T = any>(url: string, data?: any, options?: RequestOptions): Promise<TimeBasicResponse<T>>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 子模块基类,代理 DNABaseAPI 的方法和属性
|
|
34
|
+
* 所有子模块都通过这个类代理到共享的 BaseAPI 实例
|
|
35
|
+
*/
|
|
36
|
+
export declare abstract class DNASubModule {
|
|
37
|
+
protected _base: DNABaseAPI;
|
|
38
|
+
constructor(base: DNABaseAPI);
|
|
39
|
+
get dev_code(): string;
|
|
40
|
+
get token(): string;
|
|
41
|
+
get fetchFn(): typeof fetch | undefined;
|
|
42
|
+
get is_h5(): boolean;
|
|
43
|
+
get RSA_PUBLIC_KEY(): string;
|
|
44
|
+
get BASE_URL(): string;
|
|
45
|
+
getRsaPublicKey(): Promise<string>;
|
|
46
|
+
_dna_request<T = any>(url: string, data?: any, options?: RequestOptions): Promise<TimeBasicResponse<T>>;
|
|
47
|
+
_dna_request_h5<T = any>(url: string, data?: any, options?: RequestOptions): Promise<TimeBasicResponse<T>>;
|
|
48
|
+
getHeaders(options?: {
|
|
49
|
+
payload?: Record<string, any> | string | FormData;
|
|
50
|
+
exparams?: Record<string, any>;
|
|
51
|
+
dev_code?: string;
|
|
52
|
+
refer?: boolean;
|
|
53
|
+
token?: string;
|
|
54
|
+
tokenSig?: boolean;
|
|
55
|
+
h5?: boolean;
|
|
56
|
+
}): Promise<HeadersPayload>;
|
|
57
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DNASubModule, DNABaseAPI } from "./base";
|
|
2
|
+
import { DNARoleEntity, DNAShortNoteEntity, DNACharDetailEntity, DNAWeaponDetailEntity } from "../type-generated";
|
|
3
|
+
export declare class GameAPI extends DNASubModule {
|
|
4
|
+
constructor(base: DNABaseAPI);
|
|
5
|
+
defaultRoleForTool(otherUserId?: string, type?: number): Promise<import("..").TimeBasicResponse<DNARoleEntity>>;
|
|
6
|
+
getMhSwitchStatus(): Promise<import("..").TimeBasicResponse<{
|
|
7
|
+
config: string;
|
|
8
|
+
}>>;
|
|
9
|
+
getRoleDetail(char_id: string, char_eid: string, otherUserId?: string): Promise<import("..").TimeBasicResponse<DNACharDetailEntity>>;
|
|
10
|
+
getShortNoteInfo(): Promise<import("..").TimeBasicResponse<DNAShortNoteEntity>>;
|
|
11
|
+
getWeaponDetail(weapon_id: string, weapon_eid: string, otherUserId?: string): Promise<import("..").TimeBasicResponse<DNAWeaponDetailEntity>>;
|
|
12
|
+
updateMhSwitchStatus(config: string): Promise<import("..").TimeBasicResponse<any>>;
|
|
13
|
+
soulTask(): Promise<import("..").TimeBasicResponse<any>>;
|
|
14
|
+
}
|