61 lines
1.2 KiB
JavaScript
61 lines
1.2 KiB
JavaScript
const fs = require("fs");
|
|
const config = require("../../config-handler");
|
|
|
|
const unknownError = (err) => {
|
|
const stackId = new Date().getTime();
|
|
let errorLoggingFolder = config().error_logs_folder;
|
|
errorLoggingFolder = !["/", "\\"].includes(errorLoggingFolder.at(-1))
|
|
? errorLoggingFolder + "/"
|
|
: errorLoggingFolder;
|
|
fs.writeFileSync(
|
|
`${errorLoggingFolder}error_${stackId}.log`,
|
|
`ERROR:
|
|
Date: ${new Date()}
|
|
Name: ${err.name}
|
|
Message: ${err.message}
|
|
Stack:
|
|
${err.stack}`,
|
|
);
|
|
|
|
return {
|
|
error: "UNKNOWN_ERROR",
|
|
details: {
|
|
trace_id: stackId,
|
|
},
|
|
};
|
|
};
|
|
|
|
const unknownResponseFormat = "UNKNOWN_RESPONSE_FORMAT";
|
|
|
|
async function handlingError(funct, success, error) {
|
|
try {
|
|
success(await funct());
|
|
} catch (e) {
|
|
// console.log('error', e);
|
|
error(
|
|
e.name === "ApiError"
|
|
? {
|
|
error: e.message,
|
|
details: e.details,
|
|
}
|
|
: unknownError(e),
|
|
);
|
|
}
|
|
}
|
|
|
|
module.exports = async (method, req, res) => {
|
|
if (req.query.response_format === "json") {
|
|
handlingError(
|
|
async () => ({ response: await method(req, res) }),
|
|
async (data) => {
|
|
res.sendModed(data);
|
|
},
|
|
async (errBody) => {
|
|
res.errorModeOn();
|
|
res.status(400).sendModed(errBody);
|
|
},
|
|
);
|
|
} else {
|
|
res.status(400).sendModed(unknownResponseFormat);
|
|
}
|
|
}; |