diff options
author | xnacly <matteogropp@protonmail.com> | 2021-08-29 17:29:05 +0200 |
---|---|---|
committer | xnacly <matteogropp@protonmail.com> | 2021-08-29 17:29:05 +0200 |
commit | 498475c50173c2e16440a9f90cb0aa4a73aebea3 (patch) | |
tree | d9fb9cdc10b4b13be0433daffb79e1f3fa19831f /cdn/src | |
parent | added todo to fileStorage [cdn] (diff) | |
download | server-498475c50173c2e16440a9f90cb0aa4a73aebea3.tar.xz |
fixed missing imports and programming issues [cdn]
Diffstat (limited to 'cdn/src')
-rw-r--r-- | cdn/src/routes/external.ts | 27 |
1 files 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}`); |