summary refs log tree commit diff
path: root/src/routes/attachments.ts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/routes/attachments.ts50
-rw-r--r--src/routes/attachments.ts.disabled19
2 files changed, 50 insertions, 19 deletions
diff --git a/src/routes/attachments.ts b/src/routes/attachments.ts
new file mode 100644

index 00000000..7d09e402 --- /dev/null +++ b/src/routes/attachments.ts
@@ -0,0 +1,50 @@ +import { Router } from "express"; +import multer from "multer"; +import Snowflake from "../Snowflake"; + +const multer_ = multer(); +const router = Router(); + +type Attachment = { + filename: string; + file: string; + id: string; + type: string; +}; + +router.post("/:filename", multer_.single("attachment"), async (req, res) => { + const { buffer, mimetype } = req.file; + const { filename } = req.params; + const { db } = req.server; + + const File: Attachment = { + filename, + file: buffer.toString("base64"), + id: Snowflake.generate(), + type: mimetype, + }; + + if (!(await db.data.attachments.push(File))) throw new Error("Error uploading file"); + + return res.status(201).send({ success: true, message: "attachment uploaded", id: File.id, filename }); +}); + +router.get("/:hash/:filename", async (req, res) => { + const { db } = req.server; + const { hash, filename } = req.params; + + const File: Attachment = await db.data.attachments({ id: hash, filename: filename }).get(); + + res.set("Content-Type", File.type); + return res.send(Buffer.from(File.file, "base64")); +}); + +router.delete("/:hash/:filename", async (req, res) => { + const { hash, filename } = req.params; + const { db } = req.server; + + await db.data.attachments({ id: hash, filename: filename }).delete(); + return res.send({ success: true, message: "attachment deleted" }); +}); + +export default router; diff --git a/src/routes/attachments.ts.disabled b/src/routes/attachments.ts.disabled deleted file mode 100644
index db1a7efc..00000000 --- a/src/routes/attachments.ts.disabled +++ /dev/null
@@ -1,19 +0,0 @@ -import { Router } from "express"; -import multer from "multer"; -const multer_ = multer(); - -const router = Router(); -router.post("/:file", multer_.single("attachment"), async (req, res) => { - const { buffer } = req.file; - - res.set("Content-Type", "image/png"); - res.send(buffer); -}); -router.get("/:hash/:file", async (req, res) => { - res.send(`${req.params.hash}/${req.params.file}`); -}); -router.delete("/:hash/:file", async (req, res) => { - res.send("remove"); -}); - -export default router;