summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cdn/routes/embed.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/cdn/routes/embed.ts b/src/cdn/routes/embed.ts
index bf858c05..d49d69f7 100644
--- a/src/cdn/routes/embed.ts
+++ b/src/cdn/routes/embed.ts
@@ -31,6 +31,17 @@ const defaultAvatarHashMap = new Map([
 	["5", "c4e0c8300fa491d94acfd2a1fb26cea8"],
 ]);
 
+const defaultGroupDMAvatarHashMap = new Map([
+	["0", "3b70bb66089c60f8be5e214bf8574c9d"],
+	["1", "9581acd31832465bdeaa5385b0e919a3"],
+	["2", "a8a4727cf2dc2939bd3c657fad4463fa"],
+	["3", "2e46fe14586f8e95471c0917f56726b5"],
+	["4", "fac7e78de9753d4a37083bba74c1d9ef"],
+	["5", "4ab900144b0865430dc9be825c838faa"],
+	["6", "1276374a404452756f3c9cc2601508a5"],
+	["7", "904bf9f1b61f53ef4a3b7a893afeabe3"],
+]);
+
 const router = Router();
 
 async function getFile(path: string) {
@@ -64,4 +75,21 @@ router.get("/avatars/:id", async (req: Request, res: Response) => {
 	return res.send(file);
 });
 
+router.get("/group-avatars/:id", async (req: Request, res: Response) => {
+	let { id } = req.params;
+	id = id.split(".")[0]; // remove .file extension
+	const hash = defaultGroupDMAvatarHashMap.get(id);
+	if (!hash) throw new HTTPError("not found", 404);
+	const path = join(process.cwd(), "assets", "public", `${hash}.png`);
+
+	const file = await getFile(path);
+	if (!file) throw new HTTPError("not found", 404);
+	const type = await FileType.fromBuffer(file);
+
+	res.set("Content-Type", type?.mime);
+	res.set("Cache-Control", "public, max-age=31536000");
+
+	return res.send(file);
+});
+
 export default router;