middlewares/errorHandlingMiddleware.jsjavascript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const errors_1 = require("../utils/errors.js");
/**
 * Middleware to send an appropriate status code response depending on the occurring error.
 * - {@link NotFoundError}: status code 404
 * - {@link LineupConflictError}: status code 409
 * @param {Error} err Error to handle and to log
 * @param {Request} req Incoming request object
 * @param {Response} res Outgoing response object
 * @param {Function} next Next handler function (not called)
 */
function errorHandlingMiddleWare(error, req, res, next) {
    if (!res.headersSent) {
        if (error instanceof errors_1.RequestOrderError ||
            error instanceof errors_1.LineupConflictError)
            res.status(409).send(error.message);
        else if (error instanceof errors_1.NotFoundError)
            res
                .status(404)
                .send(`${req.t("responses.not-found")}${error.message ? `: ${error.message}` : ""}`);
        else if (error instanceof errors_1.FaultyInputError)
            res.status(400).send(error.message);
        else if (error instanceof errors_1.AuthorizationError)
            res
                .status(401)
                .send(`Unauthorized${error.message ? `: ${error.message}` : ""}`);
        else if (error instanceof errors_1.AccessDeniedError)
            res.status(403).send(req.t("responses.access-denied"));
        else
            res.status(500).render("../src/views/error.ejs", {
                action: "generic error handling",
                data: JSON.stringify({ userId: req.actingUserId, url: req.url }),
                error: error,
                timestamp: new Date().toLocaleString(req.locale),
            }); // njsscan-ignore: express_lfr_warning
    }
    next(error);
}
module.exports = { errorHandlingMiddleWare };