Tell browsers to cache applications/games detectable response in accordance of internal cache

This commit is contained in:
Rory&
2025-11-29 23:46:33 +01:00
parent b7fc596d06
commit 7a40124e9e
3 changed files with 15 additions and 11 deletions
+1 -1
View File
@@ -161,7 +161,7 @@
<workItem from="1760044946282" duration="43683000" />
<workItem from="1760402350251" duration="49898000" />
<workItem from="1760538864442" duration="1330000" />
<workItem from="1764432507485" duration="21512000" />
<workItem from="1764432507485" duration="22274000" />
</task>
<servers />
</component>
+7 -5
View File
@@ -23,7 +23,7 @@ import { ApplicationDetectableResponse } from "@spacebar/schemas*";
const router: Router = Router({ mergeParams: true });
const cache = {
data: {},
lastUpdated: 0
expires: 0
}
router.get(
@@ -37,14 +37,16 @@ router.get(
}),
async (req: Request, res: Response) => {
// cache for 6 hours
if (Date.now() - cache.lastUpdated > 6 * 60 * 60 * 1000) {
const response = await fetch("https://discord.com/api/v10/applications/detectable"); // because, well, it's unauthenticated anyways
if (Date.now() > cache.expires) {
const response = await fetch("https://discord.com/api/v10/games/detectable"); // because, well, it's unauthenticated anyways
const data = await response.json();
cache.data = data as ApplicationDetectableResponse;
cache.lastUpdated = Date.now();
cache.expires = Date.now() + 6 * 60 * 60 * 1000;
}
res.status(200).json(cache.data);
res.set("Cache-Control", `public, max-age=${Math.floor((cache.expires - Date.now()) / 1000)}, s-maxage=${Math.floor((cache.expires - Date.now()) / 1000)}, immutable`)
.status(200)
.json(cache.data);
},
);
+7 -5
View File
@@ -23,8 +23,8 @@ import { ApplicationDetectableResponse } from "@spacebar/schemas*";
const router: Router = Router({ mergeParams: true });
const cache = {
data: {},
lastUpdated: 0
}
expires: 0,
};
// modern dclients call this, is /applications/detectable deprecated?
router.get(
@@ -38,14 +38,16 @@ router.get(
}),
async (req: Request, res: Response) => {
// cache for 6 hours
if (Date.now() - cache.lastUpdated > 6 * 60 * 60 * 1000) {
if (Date.now() > cache.expires) {
const response = await fetch("https://discord.com/api/v10/games/detectable"); // because, well, it's unauthenticated anyways
const data = await response.json();
cache.data = data as ApplicationDetectableResponse;
cache.lastUpdated = Date.now();
cache.expires = Date.now() + 6 * 60 * 60 * 1000;
}
res.status(200).json(cache.data);
res.set("Cache-Control", `public, max-age=${Math.floor((cache.expires - Date.now()) / 1000)}, s-maxage=${Math.floor((cache.expires - Date.now()) / 1000)}, immutable`)
.status(200)
.json(cache.data);
},
);