From e82c9b32db0a97caff0088c6645a7d94cee83e1a Mon Sep 17 00:00:00 2001 From: BTMuli Date: Wed, 31 May 2023 15:42:58 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E6=B7=BB=E5=8A=A0=20=20Hutao=20API?= =?UTF-8?q?=20=E7=9B=B8=E5=85=B3=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/Hutao/api/abyss.ts | 19 ++++++++ src/plugins/Hutao/api/index.ts | 38 ++++++++++++++++ src/plugins/Hutao/index.ts | 37 ++++++++++++++++ src/plugins/Hutao/request/getAvatarCollect.ts | 27 ++++++++++++ .../Hutao/request/getAvatarHoldRate.ts | 27 ++++++++++++ src/plugins/Hutao/request/getAvatarUpRate.ts | 27 ++++++++++++ src/plugins/Hutao/request/getAvatarUseRate.ts | 27 ++++++++++++ src/plugins/Hutao/request/getOverview.ts | 27 ++++++++++++ src/plugins/Hutao/request/getTeamCollect.ts | 27 ++++++++++++ src/plugins/Hutao/request/getUserData.ts | 43 +++++++++++++++++++ src/plugins/Hutao/request/getWeaponCollect.ts | 27 ++++++++++++ src/plugins/Hutao/request/uploadData.ts | 28 ++++++++++++ src/types/Plugins/Hutao.d.ts | 32 ++++++-------- 13 files changed, 366 insertions(+), 20 deletions(-) create mode 100644 src/plugins/Hutao/api/abyss.ts create mode 100644 src/plugins/Hutao/api/index.ts create mode 100644 src/plugins/Hutao/index.ts create mode 100644 src/plugins/Hutao/request/getAvatarCollect.ts create mode 100644 src/plugins/Hutao/request/getAvatarHoldRate.ts create mode 100644 src/plugins/Hutao/request/getAvatarUpRate.ts create mode 100644 src/plugins/Hutao/request/getAvatarUseRate.ts create mode 100644 src/plugins/Hutao/request/getOverview.ts create mode 100644 src/plugins/Hutao/request/getTeamCollect.ts create mode 100644 src/plugins/Hutao/request/getUserData.ts create mode 100644 src/plugins/Hutao/request/getWeaponCollect.ts create mode 100644 src/plugins/Hutao/request/uploadData.ts diff --git a/src/plugins/Hutao/api/abyss.ts b/src/plugins/Hutao/api/abyss.ts new file mode 100644 index 00000000..3dbfeb0c --- /dev/null +++ b/src/plugins/Hutao/api/abyss.ts @@ -0,0 +1,19 @@ +/** + * @file plugins Hutao api abyss.ts + * @description Hutao API 深渊相关 + * @author BTMuli + * @since Alpha v0.2.0 + */ + +const BaseUrl = "https://homa.snapgenshin.com/"; + +export const DataUploadApi = `${BaseUrl}Record/Upload?returningRank=false`; +export const UidCheckApi = `${BaseUrl}Record/Check?Uid={uid}`; +export const UidRankApi = `${BaseUrl}Record/Rank?Uid={uid}`; +export const OverviewApi = `${BaseUrl}Statistics/Overview`; +export const AvatarUpRateApi = `${BaseUrl}Statistics/Avatar/AttendanceRate`; +export const AvatarUseRateApi = `${BaseUrl}Statistics/Avatar/UtilizationRate`; +export const AvatarHoldRateApi = `${BaseUrl}Statistics/Avatar/HoldingRate`; +export const AvatarCollocationApi = `${BaseUrl}Statistics/Avatar/AvatarCollocation`; +export const WeaponCollocationApi = `${BaseUrl}Statistics/Weapon/WeaponCollocation`; +export const TeamCombinationApi = `${BaseUrl}Statistics/Team/Combination`; diff --git a/src/plugins/Hutao/api/index.ts b/src/plugins/Hutao/api/index.ts new file mode 100644 index 00000000..09749b20 --- /dev/null +++ b/src/plugins/Hutao/api/index.ts @@ -0,0 +1,38 @@ +/** + * @file plugins Hutao api index.ts + * @description Hutao API + * @author BTMuli + * @since Alpha v0.2.0 + */ + +import { + AvatarCollocationApi, + AvatarHoldRateApi, + AvatarUpRateApi, + AvatarUseRateApi, + DataUploadApi, + OverviewApi, TeamCombinationApi, + UidCheckApi, + UidRankApi, WeaponCollocationApi, +} from "./abyss"; + +const HutaoApi = { + Abyss: { + upload: DataUploadApi, + user: { + check: UidCheckApi, + rank: UidRankApi, + }, + overview: OverviewApi, + avatar: { + upRate: AvatarUpRateApi, + useRate: AvatarUseRateApi, + holdRate: AvatarHoldRateApi, + collect: AvatarCollocationApi, + }, + weapon: WeaponCollocationApi, + team: TeamCombinationApi, + }, +}; + +export default HutaoApi; diff --git a/src/plugins/Hutao/index.ts b/src/plugins/Hutao/index.ts new file mode 100644 index 00000000..b60cd3f0 --- /dev/null +++ b/src/plugins/Hutao/index.ts @@ -0,0 +1,37 @@ +/** + * @file plugins Hutao index.ts + * @description Hutao 插件入口 + * @author BTMuli + * @since Alpha v0.2.0 + */ + +import getAvatarCollect from "./request/getAvatarCollect"; +import getAvatarHoldRate from "./request/getAvatarHoldRate"; +import getAvatarUpRate from "./request/getAvatarUpRate"; +import getAvatarUseRate from "./request/getAvatarUseRate"; +import getOverview from "./request/getOverview"; +import getTeamCollect from "./request/getTeamCollect"; +import { checkUid, getUserData } from "./request/getUserData"; +import getWeaponCollect from "./request/getWeaponCollect"; +import uploadData from "./request/uploadData"; + +const HutaoRequest = { + Abyss: { + avatar: { + getCollect: getAvatarCollect, + getHoldRate: getAvatarHoldRate, + getUpRate: getAvatarUpRate, + getUseRate: getAvatarUseRate, + }, + getOverview, + getTeamCollect, + user: { + checkExist: checkUid, + getRecord: getUserData, + }, + getWeaponCollect, + postData: uploadData, + }, +}; + +export default HutaoRequest; diff --git a/src/plugins/Hutao/request/getAvatarCollect.ts b/src/plugins/Hutao/request/getAvatarCollect.ts new file mode 100644 index 00000000..2aa8a2c8 --- /dev/null +++ b/src/plugins/Hutao/request/getAvatarCollect.ts @@ -0,0 +1,27 @@ +/** + * @file plugins Hutao request getAvatarCollect.ts + * @description 获取角色搭配数据 + * @author BTMuli + * @since Alpha v0.2.0 + */ + +// tauri +import { http } from "@tauri-apps/api"; +// api +import HutaoApi from "../api"; + +/** + * @description 获取角色搭配数据 + * @since Alpha v0.2.0 + * @return {Promise} + */ +async function getAvatarCollect (): Promise { + const url = HutaoApi.Abyss.avatar.collect; + return await http.fetch(url, { + method: "GET", + }).then((res) => { + return res.data.data; + }); +} + +export default getAvatarCollect; diff --git a/src/plugins/Hutao/request/getAvatarHoldRate.ts b/src/plugins/Hutao/request/getAvatarHoldRate.ts new file mode 100644 index 00000000..7055fa0a --- /dev/null +++ b/src/plugins/Hutao/request/getAvatarHoldRate.ts @@ -0,0 +1,27 @@ +/** + * @file plugins Hutao request getAvatarHoldRate.ts + * @description Hutao API 获取角色持有率数据请求方法 + * @author BTMuli + * @since Alpha v0.2.0 + */ + +// tauri +import { http } from "@tauri-apps/api"; +// api +import HutaoApi from "../api"; + +/** + * @description 获取角色持有率数据 + * @since Alpha v0.2.0 + * @returns {Promise} + */ +async function getAvatarHoldRate (): Promise { + const url = HutaoApi.Abyss.avatar.holdRate; + return await http.fetch(url, { + method: "GET", + }).then((res) => { + return res.data.data; + }); +} + +export default getAvatarHoldRate; diff --git a/src/plugins/Hutao/request/getAvatarUpRate.ts b/src/plugins/Hutao/request/getAvatarUpRate.ts new file mode 100644 index 00000000..fc9476bf --- /dev/null +++ b/src/plugins/Hutao/request/getAvatarUpRate.ts @@ -0,0 +1,27 @@ +/** + * @file plugins Hutao request getAvatarUpRate.ts + * @description 获取角色上场率数据 + * @author BTMuli + * @since Alpha v0.2.0 + */ + +// tauri +import { http } from "@tauri-apps/api"; +// api +import HutaoApi from "../api"; + +/** + * @description 获取角色上场率数据 + * @since Alpha v0.2.0 + * @return {Promise} + */ +async function getAvatarUpRate (): Promise { + const url = HutaoApi.Abyss.avatar.upRate; + return await http.fetch(url, { + method: "GET", + }).then((res) => { + return res.data.data; + }); +} + +export default getAvatarUpRate; diff --git a/src/plugins/Hutao/request/getAvatarUseRate.ts b/src/plugins/Hutao/request/getAvatarUseRate.ts new file mode 100644 index 00000000..636cea28 --- /dev/null +++ b/src/plugins/Hutao/request/getAvatarUseRate.ts @@ -0,0 +1,27 @@ +/** + * @file plugins Hutao request getAvatarUseRate.ts + * @description 获取角色使用率 + * @author BTMuli + * @since Alpha v0.2.0 + */ + +// tauri +import { http } from "@tauri-apps/api"; +// api +import HutaoApi from "../api"; + +/** + * @description 获取角色使用率 + * @since Alpha v0.2.0 + * @return {Promise} + */ +async function getAvatarUseRate (): Promise { + const url = HutaoApi.Abyss.avatar.useRate; + return await http.fetch(url, { + method: "GET", + }).then((res) => { + return res.data.data; + }); +} + +export default getAvatarUseRate; diff --git a/src/plugins/Hutao/request/getOverview.ts b/src/plugins/Hutao/request/getOverview.ts new file mode 100644 index 00000000..8aa1037d --- /dev/null +++ b/src/plugins/Hutao/request/getOverview.ts @@ -0,0 +1,27 @@ +/** + * @file plugins Hutao request getOverview.ts + * @description 获取深渊概览数据 + * @author BTMuli + * @since Alpha v0.2.0 + */ + +// tauri +import { http } from "@tauri-apps/api"; +// api +import HutaoApi from "../api"; + +/** + * @description 获取深渊概览数据 + * @since Alpha v0.2.0 + * @return {Promise} + */ +async function getOverview (): Promise { + const url = HutaoApi.Abyss.overview; + return await http.fetch(url, { + method: "GET", + }).then((res) => { + return res.data.data; + }); +} + +export default getOverview; diff --git a/src/plugins/Hutao/request/getTeamCollect.ts b/src/plugins/Hutao/request/getTeamCollect.ts new file mode 100644 index 00000000..c84bdce5 --- /dev/null +++ b/src/plugins/Hutao/request/getTeamCollect.ts @@ -0,0 +1,27 @@ +/** + * @file plugins Hutao request getTeamCollect.ts + * @description 获取队伍搭配数据 + * @author BTMuli + * @since Alpha v0.2.0 + */ + +// tauri +import { http } from "@tauri-apps/api"; +// api +import HutaoApi from "../api"; + +/** + * @description 获取队伍搭配数据 + * @since Alpha v0.2.0 + * @return {Promise} + */ +async function getTeamCollect (): Promise { + const url = HutaoApi.Abyss.team; + return await http.fetch(url, { + method: "GET", + }).then((res) => { + return res.data.data; + }); +} + +export default getTeamCollect; diff --git a/src/plugins/Hutao/request/getUserData.ts b/src/plugins/Hutao/request/getUserData.ts new file mode 100644 index 00000000..f308f8e6 --- /dev/null +++ b/src/plugins/Hutao/request/getUserData.ts @@ -0,0 +1,43 @@ +/** + * @file plugins Hutao request getUserData.ts + * @description 涉及 uid 的请求 + * @author BTMuli + * @since Alpha v0.2.0 + */ + +// tauri +import { http } from "@tauri-apps/api"; +// api +import HutaoApi from "../api"; + +/** + * @description 查询是否存在该数据 + * @since Alpha v0.2.0 + * @todo 未完成 + * @param {string} uid + * @return {Promise} + */ +export async function checkUid (uid: string): Promise { + const url = HutaoApi.Abyss.user.check.replace("{uid}", uid); + return await http.fetch(url, { + method: "GET", + }).then((res) => { + return res.data.data; + }); +} + +/** + * @description 获取用户数据 + * @since Alpha v0.2.0 + * @todo 未完成 + * @param {string} uid + * @return {Promise} + */ +export async function getUserData (uid: string): Promise { + const url = HutaoApi.Abyss.user.rank.replace("{uid}", uid); + return await http.fetch(url, { + method: "GET", + }).then((res) => { + return res.data.data; + }); +} diff --git a/src/plugins/Hutao/request/getWeaponCollect.ts b/src/plugins/Hutao/request/getWeaponCollect.ts new file mode 100644 index 00000000..9a90995e --- /dev/null +++ b/src/plugins/Hutao/request/getWeaponCollect.ts @@ -0,0 +1,27 @@ +/** + * @file plugins Hutao request getWeaponCollect.ts + * @description 获取武器搭配 + * @author BTMuli + * @since Alpha v0.2.0 + */ + +// tauri +import { http } from "@tauri-apps/api"; +// api +import HutaoApi from "../api"; + +/** + * @description 获取武器搭配 + * @since Alpha v0.2.0 + * @return {Promise} + */ +async function getWeaponCollect (): Promise { + const url = HutaoApi.Abyss.weapon; + return await http.fetch(url, { + method: "GET", + }).then((res) => { + return res.data.data; + }); +} + +export default getWeaponCollect; diff --git a/src/plugins/Hutao/request/uploadData.ts b/src/plugins/Hutao/request/uploadData.ts new file mode 100644 index 00000000..216a58a8 --- /dev/null +++ b/src/plugins/Hutao/request/uploadData.ts @@ -0,0 +1,28 @@ +/** + * @file plugins Hutao request uploadData.ts + * @description Hutao 数据上传请求函数集合 + * @author BTMuli + * @since Alpha v0.2.0 + */ + +// tauri +import { http } from "@tauri-apps/api"; +// api +import HutaoApi from "../api"; + +/** + * @description 上传用户数据 + * @since Alpha v0.2.0 + * @todo 上传用户数据 + * @param {TGApp.Plugins.Hutao.AbyssRecordUpload} data 用户数据 + * @returns {Promise} 上传结果 + */ +async function uploadData (data: TGApp.Plugins.Hutao.AbyssRecordUpload): Promise { + const url = HutaoApi.Abyss.upload; + return await http.fetch(url, { + method: "POST", + body: http.Body.json(data), + }).then(res => res.data); +} + +export default uploadData; diff --git a/src/types/Plugins/Hutao.d.ts b/src/types/Plugins/Hutao.d.ts index de26e3ce..b3bce26f 100644 --- a/src/types/Plugins/Hutao.d.ts +++ b/src/types/Plugins/Hutao.d.ts @@ -1,9 +1,8 @@ /** * @file types Plugins Hutao.d.ts * @description Hutao API - * @see https://homa.snapgenshin.com/doc/index.html - * @todo 待使用 - * @author BTMuli + * @see HutaoRequest + * @author BTMuli * @since Alpha v0.2.0 */ @@ -24,8 +23,7 @@ declare namespace TGApp.Plugins.Hutao { /** * @description 深渊记录上传数据 * @since Alpha v0.2.0 - * @see https://homa.snapgenshin.com/Record/Upload?returningRank=false - * @method POST + * @see HutaoRequest.Abyss.postData * @interface AbyssRecordUpload * @property {string} uid - UID * @property {string} identity - 身份标识 @@ -125,7 +123,7 @@ declare namespace TGApp.Plugins.Hutao { /** * @description 查询 uid 对应记录是否存在返回 * @since Alpha v0.2.0 - * @see https://homa.snapgenshin.com/Record/Check?Uid=500299765 + * @see HutaoRequest.Abyss.user.checkExist * @interface AbyssRecordExistResponse * @extends HutaoResponse * @property {boolean} data - 是否存在 @@ -139,7 +137,7 @@ declare namespace TGApp.Plugins.Hutao { * @description 获取深渊记录返回 * @todo 暂时缺乏数据 * @since Alpha v0.2.0 - * @see https://homa.snapgenshin.com/Record/Rank?Uid=156258765 + * @see HutaoRequest.Abyss.user.getRecord * @interface AbyssRecordRankResponse * @extends HutaoResponse * @property {AbyssRecordRank} data - 深渊记录 @@ -163,8 +161,7 @@ declare namespace TGApp.Plugins.Hutao { /** * @description 获取深渊总览数据返回 * @since Alpha v0.2.0 - * @see https://homa.snapgenshin.com/Statistics/Overview - * @method GET + * @see HutaoRequest.Abyss.getOverview * @interface AbyssOverviewResponse * @extends HutaoResponse * @property {AbyssOverview} data - 深渊总览数据 @@ -206,7 +203,7 @@ declare namespace TGApp.Plugins.Hutao { /** * @description 获取角色深渊上场率返回 * @since Alpha v0.2.0 - * @see https://homa.snapgenshin.com/Statistics/Avatar/AttendanceRate + * @see HutaoRequest.Abyss.avatar.getUpRate * @method GET * @interface AbyssAvatarUpRateResponse * @extends HutaoResponse @@ -237,8 +234,7 @@ declare namespace TGApp.Plugins.Hutao { /** * @description 获取角色深渊使用率返回 * @since Alpha v0.2.0 - * @see https://homa.snapgenshin.com/Statistics/Avatar/UtilizationRate - * @method GET + * @see HutaoRequest.Abyss.avatar.getUseRate * @interface AbyssAvatarUseRateResponse * @extends HutaoResponse * @property {AbyssAvatarUseRate[]} data - 角色深渊使用率 @@ -268,8 +264,7 @@ declare namespace TGApp.Plugins.Hutao { /** * @description 获取角色深渊持有率返回 * @since Alpha v0.2.0 - * @see https://homa.snapgenshin.com/Statistics/Avatar/HoldingRate - * @method GET + * @see HutaoRequest.Abyss.avatar.getHoldRate * @interface AbyssAvatarHoldRateResponse * @extends HutaoResponse * @property {AbyssAvatarHoldRate[]} data - 角色深渊持有率 @@ -301,8 +296,7 @@ declare namespace TGApp.Plugins.Hutao { /** * @description 获取角色的圣遗物、武器搭配 * @since Alpha v0.2.0 - * @see https://homa.snapgenshin.com/Statistics/Avatar/AvatarCollocation - * @method GET + * @see HutaoRequest.Abyss.avatar.getCollect * @interface AbyssAvatarCollocationResponse * @extends HutaoResponse * @property {AbyssAvatarCollocation[]} data - 角色搭配 @@ -344,8 +338,7 @@ declare namespace TGApp.Plugins.Hutao { /** * @description 获取武器搭配角色返回 * @since Alpha v0.2.0 - * @see https://homa.snapgenshin.com/Statistics/Weapon/WeaponCollocation - * @method GET + * @see HutaoRequest.Abyss.weapon.getCollect * @interface AbyssWeaponCollocationResponse * @extends HutaoResponse * @property {AbyssWeaponCollocation[]} data - 武器搭配角色 @@ -374,8 +367,7 @@ declare namespace TGApp.Plugins.Hutao { /** * @description 获取队伍搭配返回 * @since Alpha v0.2.0 - * @see https://homa.snapgenshin.com/Statistics/Team/Combination - * @method GET + * @see HutaoRequest.Abyss.getTeamCollect * @interface AbyssTeamCombinationResponse * @extends HutaoResponse * @property {AbyssTeamCombination[]} data - 队伍搭配