UNPKG

gbox-errors

Version:

Error handlers

70 lines (61 loc) 2.65 kB
const errorTrace = require('./errorTrace'); const nodemailer = require('nodemailer'); let packageJson; module.exports = { generate: function (data, packageJsonData) { if (packageJsonData) packageJson = packageJsonData; return { errorTrace: errorTrace(data), apiTrace: this.packageJsonDetails(), generateBy: this.generateBy() } }, packageJsonDetails: function () { return { apiName: packageJson ? packageJson.name : 'unknown', gboxErrorsVersion: packageJson ? packageJson.dependencies['gbox-errors'] : 'unknown', sqlVersion: packageJson ? packageJson.dependencies['sails-mysql'] : 'unknown', sailsVersion: packageJson ? packageJson.dependencies.sails : 'unknown' } }, generateBy: function () { return `gbox-errors ${packageJson ? packageJson.dependencies['gbox-errors'] : ''}`; }, sendEmail: async function (error, config) { let sendEmail = true; if (config && config.hasOwnProperty('errorNotification') && config.errorNotification && config.hasOwnProperty('contacts') && config.contacts.length) { if (config.hasOwnProperty('status') && config.status.length) { let readStatus = error.status.toString().substring(0, 1).concat("00"); if (config.status.indexOf(parseInt(readStatus)) === -1) { sendEmail = false; } } if (sendEmail) { let transporter = nodemailer.createTransport({ host:config.host, port: config.port, secure: true, auth: { user: config.user, pass: config.pass }, tls: { rejectUnauthorized: false } }); let mailOptions = { from: 'service@gaussbox.net', // sender address to: config.contacts, // list of receivers subject: `Error ${error.status} on Api - ${packageJson ? packageJson.name : ''}`, // Subject line text: '', // plain text body html: `<textarea style="width: 100%;height: 100%;">${JSON.stringify(error, null, 4)}</textarea>` // html body } try { await transporter.sendMail(mailOptions) } catch (err) { console.log('gbox-errors email fail!') } } } } };