mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-11 09:08:14 +08:00
✅ test(api): 测试请求,果然没跑通
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
|
||||
import { getAnnoList, getAnnoContent } from "./getAnno";
|
||||
import { getTokensByLoginTicket, getLtokenByStoken, getCookieTokenByStoken, vetifyStoken } from "./getTokens";
|
||||
import { getGameCard } from "./getGameData";
|
||||
|
||||
const TGRequest = {
|
||||
Anno: {
|
||||
@@ -18,6 +19,7 @@ const TGRequest = {
|
||||
getLToken: getLtokenByStoken,
|
||||
getCookieToken: getCookieTokenByStoken,
|
||||
vetifyStoken,
|
||||
getGameCard,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
34
src/core/request/getGameData.ts
Normal file
34
src/core/request/getGameData.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* @file core utils getGameData.ts
|
||||
* @description 获取游戏数据的函数
|
||||
* @author BTMuli<bt-muli@outlook.com>
|
||||
* @since Alpha v0.2.0
|
||||
*/
|
||||
|
||||
// tauri
|
||||
import { http } from "@tauri-apps/api";
|
||||
// utils
|
||||
import TGApi from "../api/TGApi";
|
||||
import { getDS } from "../utils/getDS";
|
||||
import { getRequestHeader } from "../utils/getRequestHeader";
|
||||
|
||||
/**
|
||||
* @description 获取用户游戏数据
|
||||
* @param {BTMuli.User.Base.Cookie} cookie 用户的 Cookie
|
||||
* @returns {Promise<unknown>} 用户基本信息
|
||||
*/
|
||||
export async function getGameCard (cookie: BTMuli.User.Base.Cookie): Promise<unknown> {
|
||||
const url = TGApi.GameData.getUserCard;
|
||||
const header = {
|
||||
...getRequestHeader(cookie),
|
||||
cookie: JSON.stringify(cookie),
|
||||
DS: getDS(`uid=${cookie.login_uid}`, ""),
|
||||
};
|
||||
return await http.fetch(url, {
|
||||
method: "GET",
|
||||
headers: header,
|
||||
}).then((res) => {
|
||||
console.log(res.data);
|
||||
return res.data;
|
||||
});
|
||||
}
|
||||
@@ -10,7 +10,7 @@ import { http } from "@tauri-apps/api";
|
||||
// api
|
||||
import TGApi from "../api/TGApi";
|
||||
// utils
|
||||
import { getRequestHeader } from "../utils/getRequestHeader";
|
||||
import TGUtils from "../utils/TGUtils";
|
||||
|
||||
/**
|
||||
* @description 根据 login_ticket 获取游戏 Token,包括 stoken 和 ltoken
|
||||
@@ -20,7 +20,7 @@ import { getRequestHeader } from "../utils/getRequestHeader";
|
||||
*/
|
||||
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);
|
||||
const header = TGUtils.User.getHeader(cookie);
|
||||
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||
method: "GET",
|
||||
headers: header,
|
||||
@@ -38,11 +38,18 @@ export async function getTokensByLoginTicket (cookie: BTMuli.User.Base.Cookie):
|
||||
* @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);
|
||||
const url = `${TGApi.GameTokens.getLToken}`;
|
||||
const header = TGUtils.User.getHeader(cookie);
|
||||
const ds = TGUtils.User.getDS(`stoken=${stoken}`, "");
|
||||
console.log("DS:", ds);
|
||||
console.log("Cookie:", JSON.stringify(cookie));
|
||||
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||
method: "GET",
|
||||
headers: header,
|
||||
method: "POST",
|
||||
headers: {
|
||||
...header,
|
||||
cookie: JSON.stringify(cookie),
|
||||
DS: `${ds}`,
|
||||
},
|
||||
}).then((res) => {
|
||||
console.log(res.data);
|
||||
if (res.data.retcode !== 0) return res.data;
|
||||
@@ -58,7 +65,7 @@ export async function getLtokenByStoken (cookie: BTMuli.User.Base.Cookie, stoken
|
||||
*/
|
||||
export async function getCookieTokenByStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
|
||||
const url = `${TGApi.GameTokens.getCookieToken}?stoken=${stoken}`;
|
||||
const header = getRequestHeader(cookie);
|
||||
const header = TGUtils.User.getHeader(cookie);
|
||||
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||
method: "GET",
|
||||
headers: header,
|
||||
@@ -76,11 +83,14 @@ export async function getCookieTokenByStoken (cookie: BTMuli.User.Base.Cookie, s
|
||||
* @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);
|
||||
const url = `${TGApi.GameTokens.vetifyStoken}`;
|
||||
const header = TGUtils.User.getHeader(cookie);
|
||||
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||
method: "GET",
|
||||
method: "POST",
|
||||
headers: header,
|
||||
body: http.Body.json({
|
||||
stoken,
|
||||
}),
|
||||
}).then((res) => {
|
||||
console.log(res.data);
|
||||
if (res.data.retcode !== 0) return res.data;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
import { parseAnnoContent } from "./parseAnno";
|
||||
import { getAnnoCard } from "./getAnnoCard";
|
||||
import { getDS } from "./getDS";
|
||||
import { getRequestHeader } from "./getRequestHeader";
|
||||
|
||||
const TGUtils = {
|
||||
Anno: {
|
||||
@@ -16,6 +17,7 @@ const TGUtils = {
|
||||
},
|
||||
User: {
|
||||
getDS,
|
||||
getHeader: getRequestHeader,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -7,6 +7,15 @@
|
||||
<v-btn @click="saveToken">
|
||||
保存 Token 到数据库
|
||||
</v-btn>
|
||||
<v-btn @click="vertifyStoken">
|
||||
验证 stoken
|
||||
</v-btn>
|
||||
<v-btn @click="getLToken">
|
||||
获取 ltoken
|
||||
</v-btn>
|
||||
<v-btn @click="getUserGameCard">
|
||||
获取游戏数据
|
||||
</v-btn>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
@@ -30,6 +39,7 @@ onMounted(async () => {
|
||||
cookie.value = JSON.parse(await TGSqlite.getCookie()) as BTMuli.User.Base.Cookie;
|
||||
});
|
||||
|
||||
// 根据获取到的 cookie.login_ticket 获取 stoken 和 ltoken
|
||||
async function getTokens () {
|
||||
const tokenRes = await TGRequest.User.getTokens(cookie.value);
|
||||
if (Array.isArray(tokenRes)) tokens.value = tokenRes;
|
||||
@@ -46,6 +56,7 @@ async function getTokens () {
|
||||
}
|
||||
}
|
||||
|
||||
// 将获取到的 token 保存到数据库
|
||||
async function saveToken () {
|
||||
console.log(tokens.value);
|
||||
const lToken = tokens.value.find((item) => item.name === "ltoken");
|
||||
@@ -55,6 +66,29 @@ async function saveToken () {
|
||||
console.log("保存成功");
|
||||
}
|
||||
|
||||
// 验证 stoken 的有效性
|
||||
async function vertifyStoken () {
|
||||
// 获取 stoken
|
||||
const stoken = await TGSqlite.getAppDataItem("stoken");
|
||||
console.log("stoken", stoken);
|
||||
const vertifyRes = await TGRequest.User.vetifyStoken(cookie.value, stoken);
|
||||
console.log(vertifyRes);
|
||||
}
|
||||
|
||||
// 获取 stoken
|
||||
async function getLToken () {
|
||||
const ltoken = await TGSqlite.getAppDataItem("ltoken");
|
||||
console.log("ltoken", ltoken);
|
||||
const tokenRes = await TGRequest.User.getLToken(cookie.value, ltoken);
|
||||
console.log(tokenRes);
|
||||
}
|
||||
|
||||
// 获取游戏数据
|
||||
async function getUserGameCard () {
|
||||
const gameCard = await TGRequest.User.getGameCard(cookie.value);
|
||||
console.log(gameCard);
|
||||
}
|
||||
|
||||
</script>
|
||||
<style scoped>
|
||||
.testDiv {
|
||||
|
||||
@@ -67,6 +67,21 @@ class TGSqlite {
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取应用数据某一项
|
||||
* @memberof TGSqlite
|
||||
* @since Alpha v0.2.0
|
||||
* @param {string} key
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
public async getAppDataItem (key: string): Promise<string> {
|
||||
const db = await Database.load(this.dbPath);
|
||||
const sql = `SELECT value FROM AppData WHERE key='${key}';`;
|
||||
const res: Array<{ value: string }> = await db.select(sql);
|
||||
await db.close();
|
||||
return res[0].value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 输入 cookie
|
||||
* @memberof TGSqlite
|
||||
|
||||
Reference in New Issue
Block a user