Spaces:
Running
Running
import { auth } from '@/auth'; | |
import { getPresignedUrl } from '@/lib/aws'; | |
import { nanoid } from '@/lib/utils'; | |
/** | |
* @param req | |
* @returns | |
*/ | |
export async function POST(req: Request): Promise<Response> { | |
const session = await auth(); | |
const user = session?.user?.email ?? 'anonymous'; | |
// if (!email) { | |
// return new Response('Unauthorized', { | |
// status: 401, | |
// }); | |
// } | |
try { | |
const { fileName, fileType } = (await req.json()) as { | |
fileName: string; | |
fileType: string; | |
}; | |
const id = nanoid(); | |
const signedFileName = `${user}/${id}/${fileName}`; | |
const res = await getPresignedUrl(signedFileName, fileType); | |
return Response.json({ | |
id, | |
signedUrl: res.url, | |
publicUrl: `https://${process.env.AWS_BUCKET_NAME}.s3.${process.env.AWS_REGION}.amazonaws.com/${signedFileName}`, | |
fields: res.fields, | |
}); | |
} catch (error) { | |
return new Response((error as Error).message, { | |
status: 400, | |
}); | |
} | |
} | |