test(api): 测试请求,果然没跑通

This commit is contained in:
BTMuli
2023-05-05 19:31:00 +08:00
parent f09a03a0ef
commit c333861c76
6 changed files with 107 additions and 10 deletions

View File

@@ -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,
},
};

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

View File

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

View File

@@ -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,
},
};

View File

@@ -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 {

View File

@@ -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