UNPKG

hamal-yunbi

Version:
225 lines (197 loc) 6.88 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 _request = require('./request'); var _request2 = _interopRequireDefault(_request); var _querystring = require('querystring'); var _querystring2 = _interopRequireDefault(_querystring); var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto); 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 DOMAIN = 'https://yunbi.com'; var _class = function () { /** * constructor * @param key * @param secret */ function _class(_ref) { var key = _ref.key, secret = _ref.secret, _ref$format = _ref.format, format = _ref$format === undefined ? 'json' : _ref$format, _ref$version = _ref.version, version = _ref$version === undefined ? 'v2' : _ref$version; _classCallCheck(this, _class); this.key = key; this.secret = secret; this.format = format; this.version = version; } _createClass(_class, [{ key: 'setupMarket', value: function setupMarket(_ref2) { var currency = _ref2.currency, assets = _ref2.assets; this.market = assets.toLowerCase() + currency.toLowerCase(); } }, { key: '_makeApi', value: function _makeApi(name) { return '/api/' + this.version + '/' + name + '.json'; } }, { key: '_makeQuery', value: function _makeQuery(verb, api) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var query = {}; params.tonce = new Date().getTime(); params.access_key = this.key; /* eslint-disable */ Object.keys(params).sort().map(function (key) { query[key] = params[key]; }); /* eslint-enable */ var queryString = _querystring2.default.stringify(query); var payload = verb.toUpperCase() + '|' + api + '|' + queryString; query.signature = _crypto2.default.createHmac('sha256', this.secret).update(payload).digest('hex'); return query; } }, { key: '_get', value: function _get(api, qs) { return _request2.default.get({ uri: DOMAIN + api, qs: qs }); } }, { key: '_sget', value: function _sget(api, params) { var query = this._makeQuery('get', api, params); return this._get(api, query); } }, { key: '_post', value: function _post(api, params) { var qs = this._makeQuery('get', api, params); return _request2.default.post({ uri: DOMAIN + api, qs: qs }); } // PUBLIC api }, { key: 'markets', value: function markets() { var api = this._makeApi('markets'); return this._get(api); } }, { key: 'tickers', value: function tickers() { var api = this._makeApi('tickers'); return this._get(api); } }, { key: 'ticker', value: function ticker(market) { market = market || this.market; var api = this._makeApi('tickers/' + market); return this._get(api); } }, { key: 'depth', value: function depth(market, limit) { market = market || this.market; var api = this._makeApi('depth'); return this._get(api, { market: market, limit: limit }); } }, { key: 'trades', value: function trades(market, _ref3) { var limit = _ref3.limit, timestamp = _ref3.timestamp, from = _ref3.from, to = _ref3.to, orderBy = _ref3.orderBy; var api = this._makeApi('trades'); market = market || this.market; return this._get(api, { market: market, limit: limit, timestamp: timestamp, from: from, to: to, order_by: orderBy }); } }, { key: 'orderBook', value: function orderBook(market, _ref4) { var asksLimit = _ref4.asksLimit, bidsLimit = _ref4.bidsLimit; market = market || this.market; var api = this._makeApi('order_book'); return this._get(api, { market: market, asks_limit: asksLimit, bids_limit: bidsLimit }); } }, { key: 'crowdsales', value: function crowdsales(key) { var api = this._makeApi('crowdsales/' + key); return this._get(api); } }, { key: 'kData', value: function kData(market, tradeId, _ref5) { var limit = _ref5.limit, period = _ref5.period, timestamp = _ref5.timestamp; var api = this._makeApi('k_with_pending_trades'); return this._get(api, { market: market, trade_id: tradeId, limit: limit, period: period, timestamp: timestamp }); } // PRIVATE api }, { key: 'accounts', value: function accounts() { var api = this._makeApi('members/me'); return this._sget(api); } }, { key: 'deposits', value: function deposits(_ref6) { var currency = _ref6.currency, limit = _ref6.limit, state = _ref6.state; var api = this._makeApi('deposits'); return this._sget(api, { currency: currency, limit: limit, state: state }); } }, { key: 'depositAddress', value: function depositAddress(currency) { var api = this._makeApi('deposit_address'); return this._sget(api, { currency: currency }); } }, { key: 'myTrades', value: function myTrades(market, _ref7) { var limit = _ref7.limit, timestamp = _ref7.timestamp, from = _ref7.from, to = _ref7.to, orderBy = _ref7.orderBy; var api = this._makeApi('trades/my'); return this._sget(api, { market: market, limit: limit, timestamp: timestamp, from: from, to: to, order_by: orderBy }); } }, { key: 'order', value: function order(id) { var api = this._makeApi('order'); return this._sget(api, { id: id }); } }, { key: 'deleteOrder', value: function deleteOrder(id) { var api = this._makeApi('order/delete'); return this._post(api, { id: id }); } }, { key: 'withdraw', value: function withdraw(id, amount, memo) { var api = this._makeApi('withdraw'); return this._post(api, { id: id, amount: amount, memo: memo }); } }]); return _class; }(); exports.default = _class;