🤔 feat(api): 写了几个接口的请求跟方法,等会测一下

This commit is contained in:
BTMuli
2023-05-05 17:32:45 +08:00
parent 683500fe2a
commit 5e55e8da38
4 changed files with 92 additions and 6 deletions

14
src/core/api/Passport.ts Normal file
View File

@@ -0,0 +1,14 @@
/**
* @file core api Passport.ts
* @description 定义 Passport API
* @author BTMuli<bt-muli@outlook.com>
* @since Alpha v0.2.0
*/
const PassportApi = "https://passport.mihoyo.com/"; // 基础 API
const PassportV4Api = "https://passport-api-v4.mihoyo.com/"; // 基础 API
const PassportAuthApi = `${PassportApi}account/auth/api/`; // 认证 API
export const PassportTokenApi = `${PassportAuthApi}getLTokenBySToken`; // 根据 stoken 获取 ltoken
export const PassportCookieTokenApi = `${PassportAuthApi}getCookieAccountInfoBySToken`; // 根据 Cookie 获取 Token
export const PassportVetifyApi = `${PassportV4Api}account/ma-cn-session/web/verifyLtoken`; // 验证 stoken 有效性

View File

@@ -2,11 +2,12 @@
* @file core api TGApi.ts
* @description 应用用到的 API
* @author BTMuli<bt-muli@outlook.com>
* @since Alpha v0.1.3
* @since Alpha v0.2.0
*/
import { ENKA_API } from "./ENKA";
import { Hk4eAnnoListApi, Hk4eAnnoContentApi, Hk4eAnnoQuery } from "./Hk4e";
import { PassportTokenApi, PassportCookieTokenApi, PassportVetifyApi } from "./Passport";
import { TakumiTokensApi } from "./Takumi";
// 应用 API
@@ -15,7 +16,12 @@ const TGApi = {
GameAnnoContent: Hk4eAnnoContentApi, // 游戏公告内容 API
GameAnnoQuery: Hk4eAnnoQuery, // 游戏公告 Query
GameEnka: ENKA_API, // 游戏 ENKA API
GameTokens: TakumiTokensApi, // 游戏 Token API
GameTokens: {
getTokens: TakumiTokensApi, // 根据 login_ticket 获取游戏 Token
getLToken: PassportTokenApi, // 根据 stoken 获取 ltoken
getCookieToken: PassportCookieTokenApi, // 根据 Cookie 获取 Token
vetifyStoken: PassportVetifyApi, // 验证 stoken 有效性
},
};
export default TGApi;

View File

@@ -6,7 +6,7 @@
*/
import { getAnnoList, getAnnoContent } from "./getAnno";
import { getTokens } from "./getTokens";
import { getTokensByLoginTicket, getLtokenByStoken, getCookieTokenByStoken, vetifyStoken } from "./getTokens";
const TGRequest = {
Anno: {
@@ -14,7 +14,10 @@ const TGRequest = {
getContent: getAnnoContent,
},
User: {
getTokens,
getTokens: getTokensByLoginTicket,
getLToken: getLtokenByStoken,
getCookieToken: getCookieTokenByStoken,
vetifyStoken,
},
};

View File

@@ -12,8 +12,14 @@ import TGApi from "../api/TGApi";
// utils
import { getRequestHeader } from "../utils/getRequestHeader";
export async function getTokens (cookie: BTMuli.User.Base.Cookie): Promise<BTMuli.User.Base.TokenItem[] | BTMuli.Genshin.Base.Response> {
const url = `${TGApi.GameTokens}?login_ticket=${cookie.login_ticket}&token_types=3&uid=${cookie.login_uid}`;
/**
* @description 根据 login_ticket 获取游戏 Token包括 stoken 和 ltoken
* @since Alpha v0.2.0
* @param {BTMuli.User.Base.Cookie} cookie 用户 Cookie
* @returns {Promise<BTMuli.User.Base.TokenItem[] | BTMuli.Genshin.Base.Response>}
*/
export async function getTokensByLoginTicket (cookie: BTMuli.User.Base.Cookie): Promise<BTMuli.User.Base.TokenItem[] | BTMuli.Genshin.Base.Response> {
const url = `${TGApi.GameTokens.getTokens}?login_ticket=${cookie.login_ticket}&token_types=3&uid=${cookie.login_uid}`;
const header = getRequestHeader(cookie);
return await http.fetch<BTMuli.User.Response.Token>(url, {
method: "GET",
@@ -23,3 +29,60 @@ export async function getTokens (cookie: BTMuli.User.Base.Cookie): Promise<BTMul
return res.data.data.list;
});
}
/**
* @description 根据 stoken 获取 ltoken
* @since Alpha v0.2.0
* @param {BTMuli.User.Base.Cookie} cookie 用户 Cookie
* @param {string} stoken stoken
* @returns {Promise<unknown>}
*/
export async function getLtokenByStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
const url = `${TGApi.GameTokens.getLToken}?stoken=${stoken}`;
const header = getRequestHeader(cookie);
return await http.fetch<BTMuli.User.Response.Token>(url, {
method: "GET",
headers: header,
}).then((res) => {
console.log(res.data);
if (res.data.retcode !== 0) return res.data;
});
}
/**
* @description 根据 stoken 获取 cookieToken
* @since Alpha v0.2.0
* @param {BTMuli.User.Base.Cookie} cookie 用户 Cookie
* @param {string} stoken stoken
* @returns {Promise<unknown>}
*/
export async function getCookieTokenByStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
const url = `${TGApi.GameTokens.getCookieToken}?stoken=${stoken}`;
const header = getRequestHeader(cookie);
return await http.fetch<BTMuli.User.Response.Token>(url, {
method: "GET",
headers: header,
}).then((res) => {
console.log(res.data);
if (res.data.retcode !== 0) return res.data;
});
}
/**
* @description 验证 stoken 有效性
* @since Alpha v0.2.0
* @param {BTMuli.User.Base.Cookie} cookie 用户 Cookie
* @param {string} stoken stoken
* @returns {Promise<unknown>}
*/
export async function vetifyStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
const url = `${TGApi.GameTokens.vetifyStoken}?stoken=${stoken}`;
const header = getRequestHeader(cookie);
return await http.fetch<BTMuli.User.Response.Token>(url, {
method: "GET",
headers: header,
}).then((res) => {
console.log(res.data);
if (res.data.retcode !== 0) return res.data;
});
}