ccxt-compiled
Version:
A JavaScript / Python / PHP cryptocurrency trading library with support for 90+ exchanges
135 lines (118 loc) • 5.11 kB
JavaScript
// ---------------------------------------------------------------------------
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
}
};
;