Initial SeConectai briefing system
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import { NextResponse } from "next/server";
|
||||
import { gerarBriefingPdfBuffer } from "@/lib/briefing-pdf";
|
||||
import { getBriefingPdfData } from "@/lib/pdf-data";
|
||||
|
||||
export const runtime = "nodejs";
|
||||
|
||||
function safeFileName(value: string) {
|
||||
return value
|
||||
.normalize("NFD")
|
||||
.replace(/[\u0300-\u036f]/g, "")
|
||||
.replace(/[^a-zA-Z0-9-_]+/g, "-")
|
||||
.replace(/-+/g, "-")
|
||||
.replace(/^-|-$/g, "")
|
||||
.toLowerCase();
|
||||
}
|
||||
|
||||
export async function GET(_request: Request, { params }: { params: { id: string } }) {
|
||||
const data = await getBriefingPdfData(params.id);
|
||||
const buffer = await gerarBriefingPdfBuffer(data);
|
||||
const fileName = `${safeFileName(data.briefing.titulo || "briefing")}.pdf`;
|
||||
|
||||
return new NextResponse(buffer, {
|
||||
headers: {
|
||||
"Content-Type": "application/pdf",
|
||||
"Content-Disposition": `attachment; filename="${fileName}"`,
|
||||
"X-Content-Type-Options": "nosniff"
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user