kodex-music-catalog/api/v1/response-wrapper.js
2023-10-01 22:05:41 +03:00

54 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);
}
}