Skip to content

Commit

Permalink
fix: Handle astroport asset response returning inconsistent data type (
Browse files Browse the repository at this point in the history
…#332)

* fix: Handle astroport asset response returning inconsistent data type for quote symbol field

* increase sleep time

* increase sleep time again

* lint

* lint

* type switch with assignment

* fix checkprovidermin test

---------

Co-authored-by: Adam Wozniak <[email protected]>
  • Loading branch information
rbajollari and adamewozniak authored Jan 17, 2024
1 parent c8537cc commit 98aa88b
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 13 deletions.
2 changes: 1 addition & 1 deletion config/currency_provider_tracker.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func (t *CurrencyProviderTracker) setCoinIDSymbolMap() error {
}
defer resp.Body.Close()

var listResponse []coinList
listResponse := []coinList{}
if err := json.NewDecoder(resp.Body).Decode(&listResponse); err != nil {
return err
}
Expand Down
32 changes: 21 additions & 11 deletions oracle/provider/astroport.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,16 @@ type (

// AstroportAssetResponse is the response from the Astroport assets endpoint.
AstroportAssetResponse struct {
BaseID string `json:"base_id"`
BaseName string `json:"base_name"`
BaseSymbol string `json:"base_symbol"`
QuoteID string `json:"quote_id"`
QuoteName string `json:"quote_name"`
QuoteSymbol string `json:"quote_symbol"`
LastPrice float64 `json:"last_price"`
BaseVolume float64 `json:"base_volume"`
QuoteVolume float64 `json:"quote_volume"`
USDVolume float64 `json:"USD_volume"`
BaseID string `json:"base_id"`
BaseName string `json:"base_name"`
BaseSymbol string `json:"base_symbol"`
QuoteID string `json:"quote_id"`
QuoteName string `json:"quote_name"`
QuoteSymbol interface{} `json:"quote_symbol"`
LastPrice float64 `json:"last_price"`
BaseVolume float64 `json:"base_volume"`
QuoteVolume float64 `json:"quote_volume"`
USDVolume float64 `json:"USD_volume"`
}
// AstroportTickersResponse is the response from the Astroport tickers endpoint.
AstroportTickersResponse struct {
Expand Down Expand Up @@ -215,9 +215,19 @@ func (p *AstroportProvider) getAvailableAssets() (map[string]types.CurrencyPair,
availablePairs := map[string]types.CurrencyPair{}
for _, assetMap := range astroportAssets {
for tickerID, asset := range assetMap {
// Some responses can return a 0 number value for Quote Symbol which
// needs to be handled here.
var quoteSymbol string
switch v := asset.QuoteSymbol.(type) {
case string:
quoteSymbol = strings.ToUpper(v)
default:
quoteSymbol = ""
}

availablePairs[tickerID] = types.CurrencyPair{
Base: strings.ToUpper(asset.BaseSymbol),
Quote: strings.ToUpper(asset.QuoteSymbol),
Quote: quoteSymbol,
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion oracle/provider/astroport_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func TestAstroportProvider_GetTickers(t *testing.T) {
require.NotEmpty(t, availPairs)

p.StartConnections()
time.Sleep(2 * time.Second)
time.Sleep(10 * time.Second)

res, err := p.GetTickerPrices(pairs...)
require.NoError(t, err)
Expand Down

0 comments on commit 98aa88b

Please sign in to comment.