import * as next_server from "next/server"
import * as faroe_user_server from "@faroe/user-server"

const actions: faroe_user_server.Actions = {
	// ...
}

const server = new faroe_user_server.Server(actions);

export async function POST(req: next_server.NextRequest): Promise<next_server.NextResponse> {
	// TODO: Protect route.

	let bodyJSON: string;
	try {
		bodyJSON = await req.text()
	} catch {
		return new next_server.NextResponse(null, { status: 400 })
	}

	let responseBodyJSON: string
	try {
		responseBodyJSON = await server.resolveActionInvocationEndpointRequest(bodyJSON);
	} catch {
		// Failed to parse JSON, unknown action, etc
		return new next_server.NextResponse(null, { status: 400 })
	}

	return new next_server.NextResponse(responseBodyJSON, {
		headers: {
			"Content-Type": "application/json"
		}
	})
}