UNPKG

ifthenpay

Version:

ifthenpay unofficial javascript module

145 lines (109 loc) 7.65 kB
'use strict'; 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;