80 lines
2.0 KiB
JavaScript
80 lines
2.0 KiB
JavaScript
'use strict'
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
const log = require ('ololog')
|
|
, ansi = require ('ansicolor').nice
|
|
, chai = require ('chai')
|
|
, expect = chai.expect
|
|
, assert = chai.assert
|
|
|
|
/* ------------------------------------------------------------------------ */
|
|
|
|
module.exports = async (exchange, symbol) => {
|
|
|
|
if (!(exchange.has.fetchBalance)) {
|
|
log (exchange.id.green, ' does not have fetchBalance')
|
|
return
|
|
}
|
|
|
|
log ('fetching balance...')
|
|
|
|
let balance = await exchange.fetchBalance ()
|
|
|
|
let currencies = [
|
|
'USD',
|
|
'CNY',
|
|
'EUR',
|
|
'BTC',
|
|
'ETH',
|
|
'JPY',
|
|
'LTC',
|
|
'DASH',
|
|
'DOGE',
|
|
'UAH',
|
|
'RUB',
|
|
'XRP',
|
|
]
|
|
|
|
// log.yellow (balance)
|
|
|
|
assert (typeof balance['total'] === 'object')
|
|
assert (typeof balance['free'] === 'object')
|
|
assert (typeof balance['used'] === 'object')
|
|
|
|
if ('info' in balance) {
|
|
for (let currency of Object.keys (balance['total'])) {
|
|
let total = balance['total'][currency]
|
|
let free = balance['free'][currency]
|
|
let used = balance['used'][currency]
|
|
if (total !== undefined && free !== undefined && used !== undefined) {
|
|
assert (total === free + used, 'free and used do not sum to total ' + exchange.id)
|
|
}
|
|
}
|
|
|
|
let result = currencies
|
|
.filter (currency => (currency in balance) &&
|
|
(balance[currency]['total'] !== undefined))
|
|
|
|
if (result.length > 0) {
|
|
result = result.map (currency => currency + ': ' + balance[currency]['total'])
|
|
if (exchange.currencies.length > result.length)
|
|
result = result.join (', ') + ' + more...'
|
|
else
|
|
result = result.join (', ')
|
|
|
|
} else {
|
|
|
|
result = 'zero balance'
|
|
}
|
|
|
|
log (result)
|
|
|
|
} else {
|
|
|
|
log (exchange.omit (balance, 'info'))
|
|
}
|
|
|
|
return balance
|
|
}
|