vtpass-node
Version:
A nodejs sdk for interacting with vtpass api.
61 lines (56 loc) • 1.79 kB
JavaScript
const moment = require("moment");
const crypto = require("crypto");
const ForbiddenError = require("../errors/ForbiddenError");
const InvalidResourceError = require("../errors/InvalidResourceError");
const NotAcceptableError = require("../errors/NotAcceptableError");
const ServerError = require("../errors/ServerError");
const ServiceUnavailableError = require("../errors/ServiceUnavailableError");
const UnauthorizedError = require("../errors/UnauthorizedError");
const InvalidPayloadError = require("../errors/InvalidPayloadError");
/**
* @class Helper
*/
class Helper {
/**
*
* @returns {String} - a random id
*/
generateUniqueId() {
return (
moment().format("YYYYMMDDHHmm") +
"" +
crypto.randomBytes(10).toString("hex")
);
}
/**
*
* @param {object} error - The error object
* @returns {Object} - The an error instance
* @memberof Helper
*/
handleError(error) {
console.log(error);
const errordata = error.response.data.error;
// console.log(error)
switch (error.response.status) {
case 401:
throw new UnauthorizedError({ message: error.response.data });
case 403:
throw new ForbiddenError({ message: error.response.data });
case 404:
throw new InvalidResourceError({ message: error.response.data });
case 406:
throw new NotAcceptableError({ message: error.response.data });
case 422:
Object.keys(errordata).forEach((key) => {
throw new InvalidPayloadError({ message: errordata[key] });
});
break;
case 503:
throw new ServiceUnavailableError({ message: error.response.data });
default:
throw new ServerError({ message: error.response.data });
}
}
}
module.exports = Helper;