56 lines
1.7 KiB
JavaScript
56 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
var debug = require('debug')('pinterest:Error');
|
|
var utils = require('./utils');
|
|
|
|
module.exports = _Error;
|
|
|
|
/**
|
|
* Generic Error Class to wrap any errors returned by pinterest-node-api
|
|
*/
|
|
function _Error() {
|
|
this.populate.apply(this, arguments);
|
|
var stack = (new Error(this.message)).stack;
|
|
debug('stack ', stack);
|
|
}
|
|
|
|
// Extend Native Error
|
|
_Error.prototype = Object.create(Error.prototype);
|
|
|
|
_Error.prototype.type = 'GenericError';
|
|
_Error.prototype.populate = function (type, message) {
|
|
this.Type = type;
|
|
this.Message = message;
|
|
};
|
|
|
|
_Error.extend = utils.protoExtend;
|
|
|
|
/**
|
|
* Create subclass of internal Error class
|
|
* (Specifically for errors returned from pinterest's REST API)
|
|
*/
|
|
var pinterestError = _Error.pinterestError = _Error.extend({
|
|
Type: 'pinterestError',
|
|
Message: '',
|
|
populate: function (raw) {
|
|
this.Type = this.type || 'unknown';
|
|
this.Code = raw.Code || 'GenericError';
|
|
this.Message = raw.message || raw.error || 'unknown';
|
|
this.StatusCode = raw.StatusCode || 'unknown';
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Helper factory which takes raw pinterest errors and outputs wrapping instances
|
|
*/
|
|
pinterestError.generate = function () {
|
|
return new _Error('Generic', 'Unknown Error');
|
|
};
|
|
|
|
// Specific pinterest Error types:
|
|
_Error.pinterestInvalidRequestError = pinterestError.extend({ type: 'pinterestInvalidRequestError' });
|
|
_Error.pinterestAPIError = pinterestError.extend({ type: 'pinterestAPIError' });
|
|
_Error.pinterestPermissionError = pinterestError.extend({ type: 'pinterestPermissionError' });
|
|
_Error.pinterestRateLimitError = pinterestError.extend({ type: 'pinterestRateLimitError' });
|
|
_Error.pinterestConnectionError = pinterestError.extend({ type: 'pinterestConnectionError' });
|