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

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