Compare commits

...

9 Commits

Author SHA1 Message Date
Bas950
b6bad90919 chore: release v0.0.9 2024-09-13 14:33:34 +02:00
Bas950
ee21bb9dec chore: release v0.0.20 2024-09-13 14:31:39 +02:00
Bas950
6efac4fef1 feat: use scienceId 2024-09-13 14:31:27 +02:00
Bas950
93424793bd chore: release v0.0.19 2024-09-13 13:46:33 +02:00
Bas950
affcb6a0cf chore: add reason 2024-09-13 13:46:27 +02:00
Bas950
bb56949dfb chore: release v0.0.18 2024-09-13 13:02:31 +02:00
Bas950
c06fe04b65 chore: fix time 2024-09-13 13:02:26 +02:00
Florian Metz
ef976341ba chore: release v0.0.17 2024-09-13 12:33:19 +02:00
Florian Metz
38893891af chore: why does it not abort 2024-09-13 12:33:10 +02:00
4 changed files with 22 additions and 10 deletions

View File

@@ -1,7 +1,7 @@
{
"name": "@premid/api-master",
"type": "module",
"version": "0.0.16",
"version": "0.0.20",
"private": true,
"description": "PreMiD's api master",
"license": "MPL-2.0",

View File

@@ -77,13 +77,13 @@ export async function clearOldSessions() {
}
async function deleteSession(session: { token: string; session: string }, key: string): Promise<string> {
const abortController = new AbortController();
const timeoutId = setTimeout(() => abortController.abort("Timeout"), 5000); //* 5 second timeout
try {
const abortController = new AbortController();
const discord = new REST({ version: "10", authPrefix: "Bearer" });
discord.setToken(session.token);
const timeoutId = setTimeout(() => abortController.abort(), 5000); //* 1 second timeout
await discord.post("/users/@me/headless-sessions/delete", {
signal: abortController.signal,
body: {
@@ -95,14 +95,22 @@ async function deleteSession(session: { token: string; session: string }, key: s
return key;
}
catch (error) {
clearTimeout(timeoutId);
//* Log detailed error information
mainLog(`Delete session error for key ${key}:`, {
errorName: error instanceof Error ? error.name : "Unknown",
errorMessage: error instanceof Error ? error.message : String(error),
errorStack: error instanceof Error ? error.stack : "No stack trace",
});
if (error instanceof Error && error.name === "AbortError") {
mainLog("Session deletion aborted due to timeout");
mainLog(`Session deletion aborted due to timeout for key ${key}`);
}
else if (error instanceof Error) {
mainLog(`Failed to delete session: ${error.message}`);
mainLog(`Failed to delete session for key ${key}: ${error.message}`);
}
else {
mainLog(`Failed to delete session: Unknown error`);
mainLog(`Failed to delete session for key ${key}: Unknown error`);
}
return key;
}

View File

@@ -1,7 +1,7 @@
{
"name": "@premid/api-worker",
"type": "module",
"version": "0.0.8",
"version": "0.0.9",
"private": true,
"description": "PreMiD's api",
"license": "MPL-2.0",

View File

@@ -8,13 +8,17 @@ import { redis } from "../functions/createServer.js";
const schema = type({
token: "string.trim",
session: "string.trim",
version: "string.semver & string.trim",
scienceId: "string.trim",
});
export async function sessionKeepAlive(request: FastifyRequest, reply: FastifyReply) {
//* Get the 2 headers
//* Get the headers
const out = schema({
token: request.headers["x-token"],
session: request.headers["x-session"],
version: request.headers["x-version"] ?? "2.6.8",
scienceId: request.headers["x-science-id"] ?? request.headers["x-token"],
});
if (out instanceof type.errors)
@@ -25,7 +29,7 @@ export async function sessionKeepAlive(request: FastifyRequest, reply: FastifyRe
await redis.hset(
"pmd-api.sessions",
out.token,
out.scienceId,
JSON.stringify({
session: out.session,
token: out.token,