mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-15 09:48:14 +08:00
✅ test(api): 测试请求,果然没跑通
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
import { getAnnoList, getAnnoContent } from "./getAnno";
|
import { getAnnoList, getAnnoContent } from "./getAnno";
|
||||||
import { getTokensByLoginTicket, getLtokenByStoken, getCookieTokenByStoken, vetifyStoken } from "./getTokens";
|
import { getTokensByLoginTicket, getLtokenByStoken, getCookieTokenByStoken, vetifyStoken } from "./getTokens";
|
||||||
|
import { getGameCard } from "./getGameData";
|
||||||
|
|
||||||
const TGRequest = {
|
const TGRequest = {
|
||||||
Anno: {
|
Anno: {
|
||||||
@@ -18,6 +19,7 @@ const TGRequest = {
|
|||||||
getLToken: getLtokenByStoken,
|
getLToken: getLtokenByStoken,
|
||||||
getCookieToken: getCookieTokenByStoken,
|
getCookieToken: getCookieTokenByStoken,
|
||||||
vetifyStoken,
|
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
|
// api
|
||||||
import TGApi from "../api/TGApi";
|
import TGApi from "../api/TGApi";
|
||||||
// utils
|
// utils
|
||||||
import { getRequestHeader } from "../utils/getRequestHeader";
|
import TGUtils from "../utils/TGUtils";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 根据 login_ticket 获取游戏 Token,包括 stoken 和 ltoken
|
* @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> {
|
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 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, {
|
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: header,
|
headers: header,
|
||||||
@@ -38,11 +38,18 @@ export async function getTokensByLoginTicket (cookie: BTMuli.User.Base.Cookie):
|
|||||||
* @returns {Promise<unknown>}
|
* @returns {Promise<unknown>}
|
||||||
*/
|
*/
|
||||||
export async function getLtokenByStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
|
export async function getLtokenByStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
|
||||||
const url = `${TGApi.GameTokens.getLToken}?stoken=${stoken}`;
|
const url = `${TGApi.GameTokens.getLToken}`;
|
||||||
const header = getRequestHeader(cookie);
|
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, {
|
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||||
method: "GET",
|
method: "POST",
|
||||||
headers: header,
|
headers: {
|
||||||
|
...header,
|
||||||
|
cookie: JSON.stringify(cookie),
|
||||||
|
DS: `${ds}`,
|
||||||
|
},
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
console.log(res.data);
|
console.log(res.data);
|
||||||
if (res.data.retcode !== 0) return 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> {
|
export async function getCookieTokenByStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
|
||||||
const url = `${TGApi.GameTokens.getCookieToken}?stoken=${stoken}`;
|
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, {
|
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: header,
|
headers: header,
|
||||||
@@ -76,11 +83,14 @@ export async function getCookieTokenByStoken (cookie: BTMuli.User.Base.Cookie, s
|
|||||||
* @returns {Promise<unknown>}
|
* @returns {Promise<unknown>}
|
||||||
*/
|
*/
|
||||||
export async function vetifyStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
|
export async function vetifyStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
|
||||||
const url = `${TGApi.GameTokens.vetifyStoken}?stoken=${stoken}`;
|
const url = `${TGApi.GameTokens.vetifyStoken}`;
|
||||||
const header = getRequestHeader(cookie);
|
const header = TGUtils.User.getHeader(cookie);
|
||||||
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||||
method: "GET",
|
method: "POST",
|
||||||
headers: header,
|
headers: header,
|
||||||
|
body: http.Body.json({
|
||||||
|
stoken,
|
||||||
|
}),
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
console.log(res.data);
|
console.log(res.data);
|
||||||
if (res.data.retcode !== 0) return res.data;
|
if (res.data.retcode !== 0) return res.data;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
import { parseAnnoContent } from "./parseAnno";
|
import { parseAnnoContent } from "./parseAnno";
|
||||||
import { getAnnoCard } from "./getAnnoCard";
|
import { getAnnoCard } from "./getAnnoCard";
|
||||||
import { getDS } from "./getDS";
|
import { getDS } from "./getDS";
|
||||||
|
import { getRequestHeader } from "./getRequestHeader";
|
||||||
|
|
||||||
const TGUtils = {
|
const TGUtils = {
|
||||||
Anno: {
|
Anno: {
|
||||||
@@ -16,6 +17,7 @@ const TGUtils = {
|
|||||||
},
|
},
|
||||||
User: {
|
User: {
|
||||||
getDS,
|
getDS,
|
||||||
|
getHeader: getRequestHeader,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,15 @@
|
|||||||
<v-btn @click="saveToken">
|
<v-btn @click="saveToken">
|
||||||
保存 Token 到数据库
|
保存 Token 到数据库
|
||||||
</v-btn>
|
</v-btn>
|
||||||
|
<v-btn @click="vertifyStoken">
|
||||||
|
验证 stoken
|
||||||
|
</v-btn>
|
||||||
|
<v-btn @click="getLToken">
|
||||||
|
获取 ltoken
|
||||||
|
</v-btn>
|
||||||
|
<v-btn @click="getUserGameCard">
|
||||||
|
获取游戏数据
|
||||||
|
</v-btn>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@@ -30,6 +39,7 @@ onMounted(async () => {
|
|||||||
cookie.value = JSON.parse(await TGSqlite.getCookie()) as BTMuli.User.Base.Cookie;
|
cookie.value = JSON.parse(await TGSqlite.getCookie()) as BTMuli.User.Base.Cookie;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 根据获取到的 cookie.login_ticket 获取 stoken 和 ltoken
|
||||||
async function getTokens () {
|
async function getTokens () {
|
||||||
const tokenRes = await TGRequest.User.getTokens(cookie.value);
|
const tokenRes = await TGRequest.User.getTokens(cookie.value);
|
||||||
if (Array.isArray(tokenRes)) tokens.value = tokenRes;
|
if (Array.isArray(tokenRes)) tokens.value = tokenRes;
|
||||||
@@ -46,6 +56,7 @@ async function getTokens () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 将获取到的 token 保存到数据库
|
||||||
async function saveToken () {
|
async function saveToken () {
|
||||||
console.log(tokens.value);
|
console.log(tokens.value);
|
||||||
const lToken = tokens.value.find((item) => item.name === "ltoken");
|
const lToken = tokens.value.find((item) => item.name === "ltoken");
|
||||||
@@ -55,6 +66,29 @@ async function saveToken () {
|
|||||||
console.log("保存成功");
|
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>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.testDiv {
|
.testDiv {
|
||||||
|
|||||||
@@ -67,6 +67,21 @@ class TGSqlite {
|
|||||||
return res;
|
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
|
* @description 输入 cookie
|
||||||
* @memberof TGSqlite
|
* @memberof TGSqlite
|
||||||
|
|||||||
Reference in New Issue
Block a user