ifthenpay
Version:
ifthenpay unofficial javascript module
145 lines (109 loc) • 7.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.IfThenPay = undefined;
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 _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**
* PO License
* @OWNER: José Moreira
* @COPYRIGHTER: José Moreira
*/
var _generateMultibanco = require('./generate-multibanco');
var _generateMultibanco2 = _interopRequireDefault(_generateMultibanco);
var _generateMiddleware = require('./generate-middleware');
var _generateMiddleware2 = _interopRequireDefault(_generateMiddleware);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var DEFAULT_OPTIONS = {
rejectDeepDecimalValues: false,
generateReferenceOnly: false,
webhook: false
};
var IfThenPay = exports.IfThenPay = function () {
function IfThenPay(options) {
_classCallCheck(this, IfThenPay);
this.mountedMiddleware = false;
options = this.options = _extends({}, DEFAULT_OPTIONS, options);
if (typeof options.entity == 'number') {
options.entity = "" + options.entity;
}
if (typeof options.entity != 'string' || options.entity.length !== 5) {
throw new TypeError("options.entity should be a 5 chars string");
}
if (typeof options.subentity == 'number') {
options.subentity = "" + options.subentity;
}
if (typeof options.subentity != 'string' || options.subentity.length > 3) {
throw new TypeError("options.subentity should be a under 3 chars string");
}
if (_typeof(options.webhook) == 'object' && options.webhook.autosetup) {
if (typeof options.webhook.url != 'string') {
options.webhook.url = false;
}
if (_typeof(options.webhook.server) == undefined) {
throw new TypeError("options.webhook.server must be an express server object");
}
if (typeof options.webhook.callback != 'function') {
throw new TypeError("options.webhook.callback must be a function");
}
if (typeof options.webhook.preSharedKey != 'string' || options.webhook.preSharedKey.length > 50) {
throw new TypeError("options.webhook.preSharedKey must be a max 50 chars key (they claim this as the AntiPhishingKey)");
}
this.mountMiddleware();
}
}
_createClass(IfThenPay, [{
key: 'generate',
value: function generate(value) {
var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var _options = this.options,
entity = _options.entity,
subentity = _options.subentity,
generateReferenceOnly = _options.generateReferenceOnly;
// Arguments validation
if (typeof id != 'number') {
throw new TypeError("id must be a number");
}
if (typeof value != 'number' || value <= 0 || value >= 1000000) {
throw TypeError("value should be a float between 0 and 1.000.000");
}
if (this.options.rejectDeepDecimalValues) {
if (value !== value.toFixed(2)) {
throw new TypeError("value should NOT have more than two decimal numbers");
}
} else {
value = +value.toFixed(2);
}
var reference = (0, _generateMultibanco2.default)(entity, subentity, value, id);
return generateReferenceOnly ? reference : { entity: entity, reference: reference, value: value };
}
}, {
key: 'middleware',
value: function middleware() {
return (0, _generateMiddleware2.default)(this);
}
}, {
key: 'mountMiddleware',
value: function mountMiddleware() {
if (this.mountedMiddleware) {
throw new Error("Seems we already mounted middleware on server");
}
var _options$webhook = this.options.webhook,
url = _options$webhook.url,
server = _options$webhook.server;
// Express Router / Restify
if (typeof server.use == 'function') {
server.get(url, this.middleware());
} else if (typeof server.on == 'function') {
server.on('request', this.middleware());
} else {
throw new Error("Unable to auto-mount middleware on server");
}
this.mountedMiddleware = true;
}
}]);
return IfThenPay;
}();
exports.default = IfThenPay;