添加 Hutao API 相关请求

This commit is contained in:
BTMuli
2023-05-31 15:42:58 +08:00
parent bf624185d1
commit e82c9b32db
13 changed files with 366 additions and 20 deletions

View 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`;

View 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;

View 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;

View 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;

View 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;

View 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;

View 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;

View 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;

View 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;

View 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;
});
}

View 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;

View 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;