import { defaultHandler, defaultResponder, getUserFromToken, } from "@documenso/lib/server"; import prisma from "@documenso/prisma"; import { NextApiRequest, NextApiResponse } from "next"; import { Document as PrismaDocument } from "@prisma/client"; import { getDocument } from "@documenso/lib/query"; async function getHandler(req: NextApiRequest, res: NextApiResponse) { const user = await getUserFromToken(req, res); const { id: documentId } = req.query; if (!user) return; if (!documentId) { res.status(400).send("Missing parameter documentId."); return; } const document: PrismaDocument = await getDocument(+documentId, req, res); if (!document) res.status(404).end(`No document with id ${documentId} found.`); const buffer: Buffer = Buffer.from(document.document.toString(), "base64"); res.setHeader("Content-Type", "application/pdf"); res.setHeader("Content-Disposition", "attachment; filename=dummy.pdf"); res.setHeader("Content-Length", buffer.length); res.status(200).send(buffer); return; } async function deleteHandler(req: NextApiRequest, res: NextApiResponse) { const user = await getUserFromToken(req, res); const { id: documentId } = req.query; if (!user) return; if (!documentId) { res.status(400).send("Missing parameter documentId."); return; } await prisma.document .delete({ where: { id: +documentId, }, }) .then(() => { res.status(200).end(); }); } export default defaultHandler({ GET: Promise.resolve({ default: defaultResponder(getHandler) }), DELETE: Promise.resolve({ default: defaultResponder(deleteHandler) }), });