summary refs log tree commit diff
path: root/cdn/src/routes/external.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cdn/src/routes/external.ts')
-rw-r--r--cdn/src/routes/external.ts58
1 files changed, 0 insertions, 58 deletions
diff --git a/cdn/src/routes/external.ts b/cdn/src/routes/external.ts
deleted file mode 100644

index c9441fc2..00000000 --- a/cdn/src/routes/external.ts +++ /dev/null
@@ -1,58 +0,0 @@ -import { Router, Response, Request } from "express"; -import fetch from "node-fetch"; -import { HTTPError } from "@fosscord/util"; -import { Snowflake, Config } from "@fosscord/util"; -import { storage } from "../util/Storage"; -import FileType from "file-type"; - -// TODO: somehow handle the deletion of images posted to the /external route - -const router = Router(); -const DEFAULT_FETCH_OPTIONS: any = { - redirect: "follow", - follow: 1, - headers: { - "user-agent": - "Mozilla/5.0 (compatible Fosscordbot/0.1; +https://fosscord.com)", - }, - size: 1024 * 1024 * 8, - compress: true, - method: "GET", -}; - -router.post("/", async (req: Request, res: Response) => { - if (req.headers.signature !== Config.get().security.requestSignature) - throw new HTTPError("Invalid request signature"); - - if (!req.body) throw new HTTPError("Invalid Body"); - - const { url } = req.body; - if (!url || typeof url !== "string") throw new HTTPError("Invalid url"); - - const id = Snowflake.generate(); - - try { - const response = await fetch(url, DEFAULT_FETCH_OPTIONS); - const buffer = await response.buffer(); - - await storage.set(`/external/${id}`, buffer); - - res.send({ id }); - } catch (error) { - throw new HTTPError("Couldn't fetch website"); - } -}); - -router.get("/:id", async (req: Request, res: Response) => { - const { id } = req.params; - - const file = await storage.get(`/external/${id}`); - if (!file) throw new HTTPError("File not found"); - const result = await FileType.fromBuffer(file); - - res.set("Content-Type", result?.mime); - - return res.send(file); -}); - -export default router;