UNPKG

dkudrin-payeer-api

Version:
244 lines (194 loc) 6.71 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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; }; }(); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug); var _util = require('util'); var _util2 = _interopRequireDefault(_util); var _https = require('https'); var _https2 = _interopRequireDefault(_https); 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 logger = (0, _debug2.default)('payeer-api'); var Payeer = function () { function Payeer() { _classCallCheck(this, Payeer); this.hostname = 'payeer.com'; this.path = '/ajax/api/api.php'; this.agent = 'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0'; this.auth = {}; this._output = null; this.errors = null; this.language = 'ru'; } _createClass(Payeer, [{ key: 'isAuth', value: function isAuth() { return !_lodash2.default.isEmpty(this.auth); } }, { key: 'getResponse', value: function getResponse(arPost, callback) { if (this.isAuth()) { _lodash2.default.extend(arPost, this.auth); } var data = []; _lodash2.default.keys(arPost).forEach(function (key) { var urlParam = encodeURIComponent(key) + '=' + encodeURIComponent(arPost[key]); data.push(urlParam); }); data.push('language=' + this.language); var dataStr = data.join('&'); var options = { hostname: this.hostname, path: this.path, method: 'POST', headers: { 'User-Agent': this.agent, 'Content-Length': dataStr.length, 'Accept': '*/*', 'Content-Type': 'application/x-www-form-urlencoded' } }; var request = _https2.default.request(options, function (response) { logger('response status: ' + response.statusCode); logger('response headers:\n' + _util2.default.inspect(response.headers)); response.setEncoding('utf8'); var responseData = ''; response.on('data', function (chunk) { responseData += chunk; }); response.on('end', function () { logger('response data:\n' + responseData); var parsedResponse = JSON.parse(responseData || '{}'); var error = null; if (!_lodash2.default.isEmpty(parsedResponse.errors)) { error = new Error(_util2.default.inspect(parsedResponse.errors)); } callback(error, parsedResponse); }); }); request.write(dataStr); request.end(); } }, { key: 'getPaySystems', value: function getPaySystems(callback) { this.getResponse({ action: 'getPaySystems' }, function (error, response) { callback(error, response); }); } }, { key: 'initOutput', value: function initOutput(arr, callback) { var _this = this; var arrPost = _lodash2.default.clone(arr); arrPost.action = 'initOutput'; this.getResponse(arrPost, function (error, response) { if (_lodash2.default.isEmpty(response.errors)) { _this._output = arr; callback(error, true); } else { _this.errors = response.errors; callback(error, false); } }); } }, { key: 'output', value: function output(callback) { var _this2 = this; var arrPost = this._output; arrPost.action = 'output'; this.getResponse(arrPost, function (error, response) { if (_lodash2.default.isEmpty(response.errors)) { callback(error, response.historyId); } else { _this2.errors = response.errors; callback(error, false); } }); } }, { key: 'getHistoryInfo', value: function getHistoryInfo(historyId, callback) { this.getResponse({ action: 'historyInfo', historyId: historyId }, function (error, response) { callback(error, response); }); } }, { key: 'getBalance', value: function getBalance(callback) { this.getResponse({ action: 'balance' }, function (error, response) { callback(error, response); }); } }, { key: 'getErrors', value: function getErrors() { return this.errors; } }, { key: 'transfer', value: function transfer(arPost, callback) { arPost.action = 'transfer'; this.getResponse(arPost, function (error, response) { callback(error, response); }); } }, { key: 'setLang', value: function setLang(language) { this.language = language; return this; } }, { key: 'getShopOrderInfo', value: function getShopOrderInfo(arPost, callback) { arPost.action = 'shopOrderInfo'; this.getResponse(arPost, function (error, response) { callback(error, response); }); } }, { key: 'checkUser', value: function checkUser(arPost, callback) { var _this3 = this; arPost.action = 'checkUser'; this.getResponse(arPost, function (error, response) { if (_lodash2.default.isEmpty(response.errors)) { callback(error, true); } else { _this3.errors = response.errors; callback(error, false); } }); } }], [{ key: 'create', value: function create(account, apiId, apiPass, callback) { var payeer = new Payeer(); var arr = { account: account, apiId: apiId, apiPass: apiPass }; payeer.getResponse(arr, function (error, response) { if (!_lodash2.default.isEmpty(response.errors)) { payeer.errors = response.errors; } else if (response.auth_error == '0') { payeer.auth = arr; } else { error = new Error('Authentication failed'); } callback(error, payeer); }); } }]); return Payeer; }(); exports.default = Payeer;