From 976512a0ac07cedc921ea6de522dfd58c6f72f94 Mon Sep 17 00:00:00 2001 From: xnacly Date: Sun, 29 Aug 2021 17:29:05 +0200 Subject: fixed missing imports and programming issues [cdn] --- cdn/src/routes/external.ts | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/cdn/src/routes/external.ts b/cdn/src/routes/external.ts index 625b6bbd..10bb0f7d 100644 --- a/cdn/src/routes/external.ts +++ b/cdn/src/routes/external.ts @@ -1,45 +1,38 @@ -// @ts-nocheck -import bodyParser from "body-parser"; import { Router, Response, Request } from "express"; import fetch from "node-fetch"; -import crypto from "crypto"; import { HTTPError } from "lambert-server"; import { Snowflake } from "@fosscord/util"; import { storage } from "../util/Storage"; +import FileType from "file-type"; +import { Config } from "@fosscord/util"; -const router = Router(); - -type crawled = { - id: string; - ogTitle: string; - ogType: string; - ogDescription: string; - ogUrl: string; - cachedImage: string; -}; +// 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; Discordbot/2.0; +https://discordapp.com)", + "user-agent": "Mozilla/5.0 (compatible Fosscordbot/0.1; +https://fosscord.com)", }, size: 1024 * 1024 * 8, compress: true, method: "GET", }; -router.post("/", bodyParser.json(), async (req: Request, res: Response) => { +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(ogImage, DEFAULT_FETCH_OPTIONS); + const response = await fetch(url, DEFAULT_FETCH_OPTIONS); const buffer = await response.buffer(); await storage.set(`/external/${id}`, buffer); @@ -50,7 +43,7 @@ router.post("/", bodyParser.json(), async (req: Request, res: Response) => { } }); -router.get("/:id/", async (req: Request, res: Response) => { +router.get("/:id", async (req: Request, res: Response) => { const { id } = req.params; const file = await storage.get(`/external/${id}`); -- cgit 1.4.1