result := struct {
Value decimal.Decimal `json:"value"`
ValueCurrency string `json:"valueCurrency"`
- Balance map[string]decimal.Decimal `json:"balance"`
+ Balance map[string]markets.Balance `json:"balance"`
}{}
resultErr := CallExternalService(fmt.Sprintf("'%s' GetBalanceValue", q.In.Market), EXTERNAL_SERVICE_TIMEOUT_SECONDS*time.Second, func() *Error {
return &Error{InvalidMarketCredentials, "wrong market credentials", fmt.Errorf("wrong '%v' market credentials", q.In.Market)}
}
- if err != nil {
- return NewInternalError(err)
+ if utils.ErrIs(err, markets.IPRestricted) {
+ return &Error{IPRestrictedApiKey, "ip restricted api key", fmt.Errorf("'%v' ip restricted", q.In.Market)}
}
- value, err := Poloniex.ComputeAccountBalanceValue(balance, q.In.Currency)
if err != nil {
return NewInternalError(err)
}
- result.Balance = balance
- result.ValueCurrency = q.In.Currency
- result.Value = value.Round(8)
+ for currency, value := range balance.Balances {
+ if value.BTCValue.Abs().LessThan(decimal.NewFromFloat(0.0001)) {
+ delete(balance.Balances, currency)
+ }
+ }
+
+ result.Balance = balance.Balances
+ result.ValueCurrency = "BTC"
+ result.Value = balance.BTCValue.Round(8)
return nil
})