import { writeFileSync } from "fs";
import { extname } from "path";
import { v4 } from "uuid";
import { ContentFilenameRegex } from "~/lib/server/constants";
import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";

export default eventHandler(async (ev) => {
	const noMultipart = "no multipart data found!???!?";
	isLoggedIn(ev);
	let mpd = await readMultipartFormData(ev);
	if (!mpd)
		throw createError({
			statusCode: 400,
			message: noMultipart,
		});

	let file = mpd[0];
	if (!file) {
		throw createError({
			statusCode: 400,
			message: noMultipart,
		});
	}
	if (!ContentFilenameRegex.test(file.filename!)) {
		throw createError({
			statusCode: 400,
			message: "unsupported file type!",
		});
	}
	let b = `${v4()}.${extname(file.filename!)}`;
	writeFileSync(`tmp/${b}`, file.data);
	return {
		success: true,
		fileName: b,
	};
});