refactor: catch errors from buildHeader in error handler 🔥

isekai-main
Barış Soner Uşaklı 3 years ago
parent d4da98404c
commit 73a9ca09c9

@ -38,7 +38,7 @@ exports.handleURIErrors = async function handleURIErrors(err, req, res, next) {
// this needs to have four arguments or express treats it as `(req, res, next)`
// don't remove `next`!
exports.handleErrors = function handleErrors(err, req, res, next) { // eslint-disable-line no-unused-vars
exports.handleErrors = async function handleErrors(err, req, res, next) { // eslint-disable-line no-unused-vars
const cases = {
EBADCSRFTOKEN: function () {
winston.error(`${req.path}\n${err.message}`);
@ -80,20 +80,26 @@ exports.handleErrors = function handleErrors(err, req, res, next) { // eslint-di
res.render('500', data);
}
};
plugins.hooks.fire('filter:error.handle', {
cases: cases,
}, (_err, data) => {
if (_err) {
// Assume defaults
winston.warn(`[errors/handle] Unable to retrieve plugin handlers for errors: ${_err.message}`);
data.cases = cases;
}
const data = await getErrorHandlers(cases);
try {
if (data.cases.hasOwnProperty(err.code)) {
data.cases[err.code](err, req, res, defaultHandler);
} else {
defaultHandler();
await defaultHandler();
}
});
} catch (_err) {
res.status(500).send(_err.message);
}
};
async function getErrorHandlers(cases) {
try {
return await plugins.hooks.fire('filter:error.handle', {
cases: cases,
});
} catch (err) {
// Assume defaults
winston.warn(`[errors/handle] Unable to retrieve plugin handlers for errors: ${err.message}`);
return { cases };
}
}

Loading…
Cancel
Save