diff options
Diffstat (limited to 'src/cdn/routes/embed.ts')
-rw-r--r-- | src/cdn/routes/embed.ts | 28 |
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; |