UNPKG

mozu-node-sdk

Version:

Mozu JavaScript SDK for Node.js and Arc.js environments

64 lines (55 loc) 1.91 kB
'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var extend = require('./tiny-extend'); var util = require('util'); module.exports = function errorify(res, additions) { try { if (typeof res === "string") { return new Error(res); } var err; var message = ensureMessage(res); var stringBody = ensureString(res.body); var details = _typeof(res.body) === "object" ? res.body : (typeof res === 'undefined' ? 'undefined' : _typeof(res)) === "object" ? res : {}; if (!message && stringBody) { try { details = JSON.parse(stringBody); message = details.message || stringBody; } catch (e) { message = stringBody; } } if (additions) { extend(details, additions); } message = (message || "Unknown error!") + formatDetails(details); err = new Error(message); err.originalError = details; return err; } catch (e) { return e; } }; function formatDetails(deets) { return "\n\nDetails:\n" + Object.keys(deets).map(function (label) { var deet = deets[label]; if ((typeof deet === 'undefined' ? 'undefined' : _typeof(deet)) === "object") deet = util.inspect(deet); return " " + label + ": " + deet; }).join('\n') + '\n'; } function ensureString(something) { if (!something) return String(something); if (typeof something === "string") { return something; } if (Buffer.isBuffer(something)) { return something.toString('utf-8'); } if (typeof something.toString === "function") { return something.toString(); } return String(something); } function ensureMessage(res) { return res.message || res.body && res.body.message; }