summary refs log tree commit diff
path: root/cdn/src/routes/external.ts
diff options
context:
space:
mode:
authorxnacly <matteogropp@protonmail.com>2021-08-29 17:29:05 +0200
committerxnacly <matteogropp@protonmail.com>2021-08-29 17:29:05 +0200
commit976512a0ac07cedc921ea6de522dfd58c6f72f94 (patch)
tree9da112d0a6fef9230267faed9204d9ca11944782 /cdn/src/routes/external.ts
parentadded todo to fileStorage [cdn] (diff)
downloadserver-976512a0ac07cedc921ea6de522dfd58c6f72f94.tar.xz
fixed missing imports and programming issues [cdn]
Diffstat (limited to '')
-rw-r--r--cdn/src/routes/external.ts27
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}`);