29 lines
840 B
TypeScript
29 lines
840 B
TypeScript
import { nanoid } from "nanoid";
|
|
import { NextResponse } from "next/server";
|
|
import { generateV4UploadSignedUrl } from "@/lib/actions/upload";
|
|
import { z } from "zod";
|
|
|
|
const BodySchema = z.object({
|
|
folderName: z.string().optional(),
|
|
fileType: z.string(),
|
|
});
|
|
|
|
// export const runtime = "edge";
|
|
async function handler(req: Request) {
|
|
// const session = await getSession();
|
|
// if (!session?.user.id) {
|
|
// return new Response("Unauthorized", {
|
|
// status: 401,
|
|
// });
|
|
// }
|
|
const rawJson = await req.json();
|
|
const body = BodySchema.parse(rawJson);
|
|
const { folderName, fileType } = body;
|
|
const filename = (`${folderName}/` ?? "") + nanoid();
|
|
const signedUrl = await generateV4UploadSignedUrl(filename, fileType);
|
|
|
|
return NextResponse.json({ ...signedUrl, fileName: filename });
|
|
}
|
|
|
|
export { handler as POST };
|