UNPKG

ccxt-compiled

Version:

A JavaScript / Python / PHP cryptocurrency trading library with support for 90+ exchanges

135 lines (118 loc) 5.11 kB
"use strict"; // --------------------------------------------------------------------------- var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const liqui = require('./liqui.js'); // --------------------------------------------------------------------------- module.exports = class dsx extends liqui { describe() { return this.deepExtend(super.describe(), { 'id': 'dsx', 'name': 'DSX', 'countries': 'UK', 'rateLimit': 1500, 'hasCORS': false, 'hasFetchOrder': true, 'hasFetchOrders': true, 'hasFetchOpenOrders': true, 'hasFetchClosedOrders': true, 'hasFetchTickers': true, 'hasFetchMyTrades': true, 'urls': { 'logo': 'https://user-images.githubusercontent.com/1294454/27990275-1413158a-645a-11e7-931c-94717f7510e3.jpg', 'api': { 'public': 'https://dsx.uk/mapi', // market data 'private': 'https://dsx.uk/tapi', // trading 'dwapi': 'https://dsx.uk/dwapi' // deposit/withdraw }, 'www': 'https://dsx.uk', 'doc': ['https://api.dsx.uk', 'https://dsx.uk/api_docs/public', 'https://dsx.uk/api_docs/private', ''] }, 'api': { // market data (public) 'public': { 'get': ['barsFromMoment/{id}/{period}/{start}', // empty reply :\ 'depth/{pair}', 'info', 'lastBars/{id}/{period}/{amount}', // period is (m, h or d) 'periodBars/{id}/{period}/{start}/{end}', 'ticker/{pair}', 'trades/{pair}'] }, // trading (private) 'private': { 'post': ['getInfo', 'TransHistory', 'TradeHistory', 'OrderHistory', 'ActiveOrders', 'Trade', 'CancelOrder'] }, // deposit / withdraw (private) 'dwapi': { 'post': ['getCryptoDepositAddress', 'cryptoWithdraw', 'fiatWithdraw', 'getTransactionStatus', 'getTransactions'] } } }); } getBaseQuoteFromMarketId(id) { let uppercase = id.toUpperCase(); let base = uppercase.slice(0, 3); let quote = uppercase.slice(3, 6); base = this.commonCurrencyCode(base); quote = this.commonCurrencyCode(quote); return [base, quote]; } fetchBalance(params = {}) { var _this = this; return (0, _asyncToGenerator3.default)(function* () { yield _this.loadMarkets(); let response = yield _this.privatePostGetInfo(); let balances = response['return']; let result = { 'info': balances }; let funds = balances['funds']; let currencies = (0, _keys2.default)(funds); for (let c = 0; c < currencies.length; c++) { let currency = currencies[c]; let uppercase = currency.toUpperCase(); uppercase = _this.commonCurrencyCode(uppercase); let account = { 'free': funds[currency], 'used': 0.0, 'total': balances['total'][currency] }; account['used'] = account['total'] - account['free']; result[uppercase] = account; } return _this.parseBalance(result); })(); } parseTicker(ticker, market = undefined) { let timestamp = ticker['updated'] * 1000; let symbol = undefined; if (market) symbol = market['symbol']; return { 'symbol': symbol, 'timestamp': timestamp, 'datetime': this.iso8601(timestamp), 'high': this.safeFloat(ticker, 'high'), 'low': this.safeFloat(ticker, 'low'), 'bid': this.safeFloat(ticker, 'buy'), 'ask': this.safeFloat(ticker, 'sell'), 'vwap': undefined, 'open': undefined, 'close': undefined, 'first': undefined, 'last': this.safeFloat(ticker, 'last'), 'change': undefined, 'percentage': undefined, 'average': 1 / this.safeFloat(ticker, 'avg'), 'baseVolume': this.safeFloat(ticker, 'vol'), 'quoteVolume': this.safeFloat(ticker, 'vol_cur'), 'info': ticker }; } getOrderIdKey() { return 'orderId'; } signBodyWithSecret(body) { return this.decode(this.hmac(this.encode(body), this.encode(this.secret), 'sha512', 'base64')); } getVersionString() { return ''; // they don't prepend version number to public URLs as other BTC-e clones do } };