trihub-ernaehrung-backseatDevs/src/server/routes/contact.js

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.",
},
},
);
}
}