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