summary refs log tree commit diff
path: root/src/cdn/routes/role-icons.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/cdn/routes/role-icons.ts')
-rw-r--r--src/cdn/routes/role-icons.ts78
1 files changed, 27 insertions, 51 deletions
diff --git a/src/cdn/routes/role-icons.ts b/src/cdn/routes/role-icons.ts
index 8040405a..f599a154 100644
--- a/src/cdn/routes/role-icons.ts
+++ b/src/cdn/routes/role-icons.ts
@@ -30,50 +30,35 @@ import { multer } from "../util/multer";
 // TODO: generate different sizes of icon
 // TODO: generate different image types of icon
 
-const STATIC_MIME_TYPES = [
-	"image/png",
-	"image/jpeg",
-	"image/webp",
-	"image/svg+xml",
-	"image/svg",
-];
+const STATIC_MIME_TYPES = ["image/png", "image/jpeg", "image/webp", "image/svg+xml", "image/svg"];
 const ALLOWED_MIME_TYPES = [...STATIC_MIME_TYPES];
 
 const router = Router();
 
-router.post(
-	"/:role_id",
-	multer.single("file"),
-	async (req: Request, res: Response) => {
-		if (req.headers.signature !== Config.get().security.requestSignature)
-			throw new HTTPError("Invalid request signature");
-		if (!req.file) throw new HTTPError("Missing file");
-		const { buffer, size } = req.file;
-		const { role_id } = req.params;
-
-		const hash = crypto
-			.createHash("md5")
-			.update(Snowflake.generate())
-			.digest("hex");
-
-		const type = await FileType.fromBuffer(buffer);
-		if (!type || !ALLOWED_MIME_TYPES.includes(type.mime))
-			throw new HTTPError("Invalid file type");
-
-		const path = `role-icons/${role_id}/${hash}.png`;
-		const endpoint =
-			Config.get().cdn.endpointPublic || "http://localhost:3001";
-
-		await storage.set(path, buffer);
-
-		return res.json({
-			id: hash,
-			content_type: type.mime,
-			size,
-			url: `${endpoint}${req.baseUrl}/${role_id}/${hash}`,
-		});
-	},
-);
+router.post("/:role_id", multer.single("file"), async (req: Request, res: Response) => {
+	if (req.headers.signature !== Config.get().security.requestSignature)
+		throw new HTTPError("Invalid request signature");
+	if (!req.file) throw new HTTPError("Missing file");
+	const { buffer, size } = req.file;
+	const { role_id } = req.params;
+
+	const hash = crypto.createHash("md5").update(Snowflake.generate()).digest("hex");
+
+	const type = await FileType.fromBuffer(buffer);
+	if (!type || !ALLOWED_MIME_TYPES.includes(type.mime)) throw new HTTPError("Invalid file type");
+
+	const path = `role-icons/${role_id}/${hash}.png`;
+	const endpoint = Config.get().cdn.endpointPublic || "http://localhost:3001";
+
+	await storage.set(path, buffer);
+
+	return res.json({
+		id: hash,
+		content_type: type.mime,
+		size,
+		url: `${endpoint}${req.baseUrl}/${role_id}/${hash}`,
+	});
+});
 
 router.get("/:role_id", async (req: Request, res: Response) => {
 	const { role_id } = req.params;
@@ -97,19 +82,10 @@ router.get("/:role_id/:hash", async (req: Request, res: Response) => {
 	const role_icon_hash = hash.split(".")[0];
 	let file: Buffer | null = null;
 
-	const extensions_to_try = [
-		requested_extension,
-		"png",
-		"jpg",
-		"jpeg",
-		"webp",
-		"svg",
-	];
+	const extensions_to_try = [requested_extension, "png", "jpg", "jpeg", "webp", "svg"];
 
 	for (let i = 0; i < extensions_to_try.length; i++) {
-		file = await storage.get(
-			`role-icons/${role_id}/${role_icon_hash}.${extensions_to_try[i]}`,
-		);
+		file = await storage.get(`role-icons/${role_id}/${role_icon_hash}.${extensions_to_try[i]}`);
 		if (file) break;
 	}