refactor: umami

This commit is contained in:
手瓜一十雪 2024-05-13 18:08:46 +08:00
parent 42ba524e4e
commit b795e6c3d2
3 changed files with 50 additions and 43 deletions

View File

@ -1,4 +1,5 @@
export class RequestUtil { export class RequestUtil {
//适用于获取服务器下发cookies时获取
static async HttpGetCookies(url: string, method: string = 'GET'): Promise<Map<string, string>> { static async HttpGetCookies(url: string, method: string = 'GET'): Promise<Map<string, string>> {
const response = await fetch(url, { method: method }); const response = await fetch(url, { method: method });
if (!response.ok) { if (!response.ok) {
@ -18,6 +19,7 @@ export class RequestUtil {
return result; return result;
} }
// 请求和回复都是JSON data传原始内容 自动编码json
static async HttpGetJson<T>(url: string, method: string = 'GET', data?: any, headers: Record<string, string> = {}): static async HttpGetJson<T>(url: string, method: string = 'GET', data?: any, headers: Record<string, string> = {}):
Promise<T> { Promise<T> {
let body: BodyInit | undefined = undefined; let body: BodyInit | undefined = undefined;
@ -45,4 +47,28 @@ export class RequestUtil {
throw new Error(`Failed to fetch JSON: ${error.message}`); throw new Error(`Failed to fetch JSON: ${error.message}`);
} }
} }
// 请求返回都是原始内容
static async HttpGetText(url: string, method: string = 'GET', data?: any, headers: Record<string, string> = {}): Promise<string> {
let requestInit: RequestInit = { method: method };
if (method.toUpperCase() === 'POST' && data !== undefined) {
if (headers) {
headers['Content-Type'] = 'application/json';
requestInit.headers = new Headers(headers);
} else {
requestInit.headers = new Headers({ 'Content-Type': 'application/json' });
}
} else {
requestInit.headers = new Headers(headers);
}
try {
const response = await fetch(url, { ...requestInit, body: data });
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const jsonResult = await response.text();
return jsonResult;
} catch (error: any) {
throw new Error(`Failed to fetch JSON: ${error.message}`);
}
}
} }

View File

@ -1,44 +1,25 @@
import { request } from 'node:https'; import { RequestUtil } from './request';
export function postLoginStatus() {
const req = request(
{
hostname: 'napcat.wumiao.wang',
path: '/api/send',
port: 443,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0'
}
},
(res) => {
//let data = '';
res.on('data', (chunk) => {
//data += chunk;
});
res.on('error', (err) => {
});
res.on('end', () => {
//console.log('Response:', data);
});
}
);
req.on('error', (e) => {
// console.error('Request error:', e);
});
const StatesData = {
type: 'event',
payload: {
'website': '952bf82f-8f49-4456-aec5-e17db5f27f7e',
'hostname': 'napcat.demo.cn',
'screen': '1920x1080',
'language': 'zh-CN',
'title': 'OneBot.Login',
'url': '/login/onebot11/1.3.2',
'referrer': 'https://napcat.demo.cn/login?type=onebot11'
}
};
req.write(JSON.stringify(StatesData));
req.end(); export async function postLoginStatus() {
return new Promise(async (resolve, reject) => {
const StatesData = {
type: 'event',
payload: {
'website': '952bf82f-8f49-4456-aec5-e17db5f27f7e',
'hostname': 'napcat.demo.cn',
'screen': '1920x1080',
'language': 'zh-CN',
'title': 'OneBot.Login',
'url': '/login/onebot11/1.3.5',
'referrer': 'https://napcat.demo.cn/login?type=onebot11'
}
};
await RequestUtil.HttpGetText('https://napcat.wumiao.wang/api/send',
'POST',
StatesData, {
'Content-Type': 'application/json',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0'
});
resolve(true);
});
} }

View File

@ -41,7 +41,7 @@ napCatCore.onLoginSuccess((uin, uid) => {
console.log('登录成功!'); console.log('登录成功!');
WebUiDataRuntime.setQQLoginStatus(true); WebUiDataRuntime.setQQLoginStatus(true);
WebUiDataRuntime.setQQLoginUin(uin.toString()); WebUiDataRuntime.setQQLoginUin(uin.toString());
postLoginStatus(); postLoginStatus().catch(logDebug);
}); });
const showQRCode = async (url: string, base64: string, buffer: Buffer) => { const showQRCode = async (url: string, base64: string, buffer: Buffer) => {
await WebUiDataRuntime.setQQLoginQrcodeURL(url); await WebUiDataRuntime.setQQLoginQrcodeURL(url);