mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-14 09:38:13 +08:00
✨ 添加 Hutao API 相关请求
This commit is contained in:
19
src/plugins/Hutao/api/abyss.ts
Normal file
19
src/plugins/Hutao/api/abyss.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* @file plugins Hutao api abyss.ts
|
||||
* @description Hutao API 深渊相关
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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`;
|
||||
38
src/plugins/Hutao/api/index.ts
Normal file
38
src/plugins/Hutao/api/index.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* @file plugins Hutao api index.ts
|
||||
* @description Hutao API
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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;
|
||||
37
src/plugins/Hutao/index.ts
Normal file
37
src/plugins/Hutao/index.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* @file plugins Hutao index.ts
|
||||
* @description Hutao 插件入口
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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;
|
||||
27
src/plugins/Hutao/request/getAvatarCollect.ts
Normal file
27
src/plugins/Hutao/request/getAvatarCollect.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* @file plugins Hutao request getAvatarCollect.ts
|
||||
* @description 获取角色搭配数据
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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<TGApp.Plugins.Hutao.AbyssAvatarCollocation[]>}
|
||||
*/
|
||||
async function getAvatarCollect (): Promise<TGApp.Plugins.Hutao.AbyssAvatarCollocation[]> {
|
||||
const url = HutaoApi.Abyss.avatar.collect;
|
||||
return await http.fetch<TGApp.Plugins.Hutao.AbyssAvatarCollocationResponse>(url, {
|
||||
method: "GET",
|
||||
}).then((res) => {
|
||||
return res.data.data;
|
||||
});
|
||||
}
|
||||
|
||||
export default getAvatarCollect;
|
||||
27
src/plugins/Hutao/request/getAvatarHoldRate.ts
Normal file
27
src/plugins/Hutao/request/getAvatarHoldRate.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* @file plugins Hutao request getAvatarHoldRate.ts
|
||||
* @description Hutao API 获取角色持有率数据请求方法
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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<TGApp.Plugins.Hutao.AbyssAvatarHoldRate[]>}
|
||||
*/
|
||||
async function getAvatarHoldRate (): Promise<TGApp.Plugins.Hutao.AbyssAvatarHoldRate[]> {
|
||||
const url = HutaoApi.Abyss.avatar.holdRate;
|
||||
return await http.fetch<TGApp.Plugins.Hutao.AbyssAvatarHoldRateResponse>(url, {
|
||||
method: "GET",
|
||||
}).then((res) => {
|
||||
return res.data.data;
|
||||
});
|
||||
}
|
||||
|
||||
export default getAvatarHoldRate;
|
||||
27
src/plugins/Hutao/request/getAvatarUpRate.ts
Normal file
27
src/plugins/Hutao/request/getAvatarUpRate.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* @file plugins Hutao request getAvatarUpRate.ts
|
||||
* @description 获取角色上场率数据
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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<TGApp.Plugins.Hutao.AbyssAvatarUpRate[]>}
|
||||
*/
|
||||
async function getAvatarUpRate (): Promise<TGApp.Plugins.Hutao.AbyssAvatarUpRate[]> {
|
||||
const url = HutaoApi.Abyss.avatar.upRate;
|
||||
return await http.fetch<TGApp.Plugins.Hutao.AbyssAvatarUpRateResponse>(url, {
|
||||
method: "GET",
|
||||
}).then((res) => {
|
||||
return res.data.data;
|
||||
});
|
||||
}
|
||||
|
||||
export default getAvatarUpRate;
|
||||
27
src/plugins/Hutao/request/getAvatarUseRate.ts
Normal file
27
src/plugins/Hutao/request/getAvatarUseRate.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* @file plugins Hutao request getAvatarUseRate.ts
|
||||
* @description 获取角色使用率
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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<TGApp.Plugins.Hutao.AbyssAvatarUseRate[]>}
|
||||
*/
|
||||
async function getAvatarUseRate (): Promise<TGApp.Plugins.Hutao.AbyssAvatarUseRate[]> {
|
||||
const url = HutaoApi.Abyss.avatar.useRate;
|
||||
return await http.fetch<TGApp.Plugins.Hutao.AbyssAvatarUseRateResponse>(url, {
|
||||
method: "GET",
|
||||
}).then((res) => {
|
||||
return res.data.data;
|
||||
});
|
||||
}
|
||||
|
||||
export default getAvatarUseRate;
|
||||
27
src/plugins/Hutao/request/getOverview.ts
Normal file
27
src/plugins/Hutao/request/getOverview.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* @file plugins Hutao request getOverview.ts
|
||||
* @description 获取深渊概览数据
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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<TGApp.Plugins.Hutao.AbyssOverview>}
|
||||
*/
|
||||
async function getOverview (): Promise<TGApp.Plugins.Hutao.AbyssOverview> {
|
||||
const url = HutaoApi.Abyss.overview;
|
||||
return await http.fetch<TGApp.Plugins.Hutao.AbyssOverviewResponse>(url, {
|
||||
method: "GET",
|
||||
}).then((res) => {
|
||||
return res.data.data;
|
||||
});
|
||||
}
|
||||
|
||||
export default getOverview;
|
||||
27
src/plugins/Hutao/request/getTeamCollect.ts
Normal file
27
src/plugins/Hutao/request/getTeamCollect.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* @file plugins Hutao request getTeamCollect.ts
|
||||
* @description 获取队伍搭配数据
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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<TGApp.Plugins.Hutao.AbyssTeamCombination[]>}
|
||||
*/
|
||||
async function getTeamCollect (): Promise<TGApp.Plugins.Hutao.AbyssTeamCombination[]> {
|
||||
const url = HutaoApi.Abyss.team;
|
||||
return await http.fetch<TGApp.Plugins.Hutao.AbyssTeamCombinationResponse>(url, {
|
||||
method: "GET",
|
||||
}).then((res) => {
|
||||
return res.data.data;
|
||||
});
|
||||
}
|
||||
|
||||
export default getTeamCollect;
|
||||
43
src/plugins/Hutao/request/getUserData.ts
Normal file
43
src/plugins/Hutao/request/getUserData.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
/**
|
||||
* @file plugins Hutao request getUserData.ts
|
||||
* @description 涉及 uid 的请求
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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<boolean>}
|
||||
*/
|
||||
export async function checkUid (uid: string): Promise<boolean> {
|
||||
const url = HutaoApi.Abyss.user.check.replace("{uid}", uid);
|
||||
return await http.fetch<TGApp.Plugins.Hutao.AbyssRecordExistResponse>(url, {
|
||||
method: "GET",
|
||||
}).then((res) => {
|
||||
return res.data.data;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取用户数据
|
||||
* @since Alpha v0.2.0
|
||||
* @todo 未完成
|
||||
* @param {string} uid
|
||||
* @return {Promise<TGApp.Plugins.Hutao.AbyssRecordRank>}
|
||||
*/
|
||||
export async function getUserData (uid: string): Promise<TGApp.Plugins.Hutao.AbyssRecordRank> {
|
||||
const url = HutaoApi.Abyss.user.rank.replace("{uid}", uid);
|
||||
return await http.fetch<TGApp.Plugins.Hutao.AbyssRecordRankResponse>(url, {
|
||||
method: "GET",
|
||||
}).then((res) => {
|
||||
return res.data.data;
|
||||
});
|
||||
}
|
||||
27
src/plugins/Hutao/request/getWeaponCollect.ts
Normal file
27
src/plugins/Hutao/request/getWeaponCollect.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* @file plugins Hutao request getWeaponCollect.ts
|
||||
* @description 获取武器搭配
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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<TGApp.Plugins.Hutao.AbyssWeaponCollocation[]>}
|
||||
*/
|
||||
async function getWeaponCollect (): Promise<TGApp.Plugins.Hutao.AbyssWeaponCollocation[]> {
|
||||
const url = HutaoApi.Abyss.weapon;
|
||||
return await http.fetch<TGApp.Plugins.Hutao.AbyssWeaponCollocationResponse>(url, {
|
||||
method: "GET",
|
||||
}).then((res) => {
|
||||
return res.data.data;
|
||||
});
|
||||
}
|
||||
|
||||
export default getWeaponCollect;
|
||||
28
src/plugins/Hutao/request/uploadData.ts
Normal file
28
src/plugins/Hutao/request/uploadData.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* @file plugins Hutao request uploadData.ts
|
||||
* @description Hutao 数据上传请求函数集合
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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<unknown>} 上传结果
|
||||
*/
|
||||
async function uploadData (data: TGApp.Plugins.Hutao.AbyssRecordUpload): Promise<unknown> {
|
||||
const url = HutaoApi.Abyss.upload;
|
||||
return await http.fetch(url, {
|
||||
method: "POST",
|
||||
body: http.Body.json(data),
|
||||
}).then(res => res.data);
|
||||
}
|
||||
|
||||
export default uploadData;
|
||||
30
src/types/Plugins/Hutao.d.ts
vendored
30
src/types/Plugins/Hutao.d.ts
vendored
@@ -1,8 +1,7 @@
|
||||
/**
|
||||
* @file types Plugins Hutao.d.ts
|
||||
* @description Hutao API
|
||||
* @see https://homa.snapgenshin.com/doc/index.html
|
||||
* @todo 待使用
|
||||
* @see HutaoRequest
|
||||
* @author BTMuli <bt-muli@outlook.com>
|
||||
* @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 - 队伍搭配
|
||||
|
||||
Reference in New Issue
Block a user