39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
import { BookingError } from "../services/booking-service.js";
|
|
import { json, readJson } from "./bookings.js";
|
|
|
|
export async function handleContact(request, response, service, validateOnly) {
|
|
if (request.method !== "POST") {
|
|
response.setHeader("Allow", "POST");
|
|
return json(response, 405, {
|
|
error: {
|
|
code: "METHOD_NOT_ALLOWED",
|
|
message: "Bitte POST verwenden.",
|
|
},
|
|
});
|
|
}
|
|
try {
|
|
const input = await readJson(request);
|
|
const result = await (validateOnly
|
|
? service.validate(input)
|
|
: service.submit(input));
|
|
return json(response, validateOnly ? 200 : 201, result);
|
|
} catch (error) {
|
|
return json(
|
|
response,
|
|
error instanceof BookingError ? error.status : 500,
|
|
{
|
|
error: {
|
|
code:
|
|
error instanceof BookingError
|
|
? error.code
|
|
: "INTERNAL_ERROR",
|
|
message:
|
|
error instanceof BookingError
|
|
? error.message
|
|
: "Die Kontaktanfrage konnte nicht verarbeitet werden.",
|
|
},
|
|
},
|
|
);
|
|
}
|
|
}
|