/** * @file web/request/apiHubReq.ts * @description apiHub下的请求 * @since Beta v0.6.10/v0.7.0 */ import TGHttp from "@/utils/TGHttp.js"; import { getRequestHeader } from "@/web/utils/getRequestHeader.js"; // MysApiHubBaseUrl => Mahbu const Mahbu: Readonly = "https://bbs-api.miyoushe.com/apihub/"; const Referer: Readonly = "https://bbs.mihoyo.com/"; /** * @description 获取所有版块 * @since Beta v0.6.8 * @return {Promise>} */ async function getAllGamesForums(): Promise> { return ( await TGHttp(`${Mahbu}wapi/getAllGamesForums`, { method: "GET", headers: { "Content-Type": "application/json", referer: Referer }, }) ).data.list; } /** * @description 获取所有分区 * @since Beta v0.6.8 * @return {Promise>} */ async function getGameList(): Promise> { return ( await TGHttp(`${Mahbu}wapi/getGameList`, { method: "GET", headers: { "Content-Type": "application/json", referer: Referer }, }) ).data.list; } /** * @description 获取用户米游币任务完成情况 * @since Beta v0.6.10/v0.7.0 * @param {Record} cookie 用户 Cookie * @return {Promise} */ async function getMissions(cookie: Record): Promise { const header = getRequestHeader(cookie, "GET", {}); return await TGHttp(`${Mahbu}api/getMissions`, { method: "GET", headers: header, }); } /** * @description 获取投票信息 * @since Beta v0.6.2 * @param {string} id 投票 ID * @param {string} uid 用户 ID * @return {Promise} */ async function getVotes(id: string, uid: string): Promise { return ( await TGHttp(`${Mahbu}api/getVotes`, { method: "GET", headers: { "Content-Type": "application/json", referer: Referer }, query: { owner_uid: uid, vote_ids: id }, }) ).data.data[0]; } /** * @description 获取投票结果 * @since Beta v0.6.2 * @param {string} id 投票 ID * @param {string} uid 用户 ID * @return {Promise} */ async function getVoteResult(id: string, uid: string): Promise { return ( await TGHttp(`${Mahbu}api/getVotesResult`, { method: "GET", headers: { "Content-Type": "application/json", referer: Referer }, query: { owner_uid: uid, vote_ids: id }, }) ).data.data[0]; } /** * @description 获取首页导航列表 * @since Beta v0.6.2 * @param {number} gid GID * @return {Promise} */ async function homeNew(gid: number = 2): Promise { return ( await TGHttp(`${Mahbu}api/home/new`, { method: "GET", headers: { "x-rpc-client_type": "2" }, query: { gids: gid }, }) ).data.navigator; } /** * @description 点赞 * @since Beta v0.6.10/v0.7.0 * @param {string} id 帖子 ID * @param {Record} cookie 用户 Cookie * @param {boolean} cancel 是否取消点赞 * @return {Promise} */ async function upVotePost( id: string, cookie: Record, cancel: boolean = false, ): Promise { const data = { is_cancel: cancel, post_id: id }; const header = { ...getRequestHeader(cookie, "POST", data, "K2", true), "x-rpc-client_type": "2", }; return await TGHttp(`${Mahbu}api/upvotePost`, { method: "POST", headers: header, body: JSON.stringify(data), }); } const apiHubReq = { vote: { info: getVotes, result: getVoteResult }, home: homeNew, forum: getAllGamesForums, game: getGameList, mission: getMissions, post: { like: upVotePost, share: getShareConf }, }; export default apiHubReq;