]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blobdiff - api/market_config.go
Display short positions.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / api / market_config.go
index d85af4de9e3c5f3a7e6f18c65d162ce130aa1d1e..25e390d627811ad7c24136f195743e282f26d766 100644 (file)
@@ -82,7 +82,7 @@ func (q MarketBalanceQuery) Run() (interface{}, *Error) {
        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 {
@@ -92,18 +92,23 @@ func (q MarketBalanceQuery) Run() (interface{}, *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
        })