Skip to content

Commit

Permalink
prevent getPricesInReferenceCurrency returning error (#43)
Browse files Browse the repository at this point in the history
  • Loading branch information
sekulicd authored Aug 29, 2022
1 parent 4f9d2fc commit db40d01
Showing 1 changed file with 39 additions and 26 deletions.
65 changes: 39 additions & 26 deletions internal/core/application/market_price_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ func (m *marketPriceService) GetPrices(
refPricesPerAssetPair,
)
if err != nil {
return nil, err
log.Debugf("GetPrices -> getPricesInReferenceCurrency: %v", err)
}

basePriceInRefCurrency = b
Expand Down Expand Up @@ -165,16 +165,23 @@ func (m *marketPriceService) getPricesInReferenceCurrency(
return v.basePrice, v.quotePrice, nil
}

baseAssetTickerFound, quoteAssetTickerFound, isBaseAssetStable, isQuoteAssetStable :=
false, false, false, false
baseAssetTicker, err := m.raterSvc.GetAssetCurrency(mktPrice.BaseAsset)
if err != nil {
return
if err == nil {
baseAssetTickerFound = true
}
quoteAssetTicker, err := m.raterSvc.GetAssetCurrency(mktPrice.QuoteAsset)
if err != nil {
return
if err == nil {
quoteAssetTickerFound = true
}

if baseAssetTickerFound {
isBaseAssetStable, _ = m.raterSvc.IsFiatSymbolSupported(baseAssetTicker)
}
if quoteAssetTickerFound {
isQuoteAssetStable, _ = m.raterSvc.IsFiatSymbolSupported(quoteAssetTicker)
}
isBaseAssetStable, _ := m.raterSvc.IsFiatSymbolSupported(baseAssetTicker)
isQuoteAssetStable, _ := m.raterSvc.IsFiatSymbolSupported(quoteAssetTicker)

defer func() {
if !basePriceInRefCurrency.IsZero() && !quotePriceInRefCurrency.IsZero() {
Expand All @@ -196,12 +203,14 @@ func (m *marketPriceService) getPricesInReferenceCurrency(
basePriceInRefCurrency = unitOfBasePriceInRefCurrency.Mul(mktPrice.BasePrice)
quotePriceInRefCurrency = basePriceInRefCurrency.Mul(mktPrice.QuotePrice)
} else {
basePriceInRefCurrency, _ = m.raterSvc.ConvertCurrency(
ctx,
quoteAssetTicker,
referenceCurrency,
)
quotePriceInRefCurrency = basePriceInRefCurrency.Mul(mktPrice.QuotePrice)
if quoteAssetTickerFound {
basePriceInRefCurrency, _ = m.raterSvc.ConvertCurrency(
ctx,
quoteAssetTicker,
referenceCurrency,
)
quotePriceInRefCurrency = basePriceInRefCurrency.Mul(mktPrice.QuotePrice)
}
}
case isQuoteAssetStable:
unitOfQuotePriceInRefCurrency, _ := m.raterSvc.ConvertCurrency(
Expand All @@ -213,24 +222,28 @@ func (m *marketPriceService) getPricesInReferenceCurrency(
quotePriceInRefCurrency = unitOfQuotePriceInRefCurrency.Mul(mktPrice.QuotePrice)
basePriceInRefCurrency = quotePriceInRefCurrency.Mul(mktPrice.BasePrice)
} else {
quotePriceInRefCurrency, _ = m.raterSvc.ConvertCurrency(
if baseAssetTickerFound {
quotePriceInRefCurrency, _ = m.raterSvc.ConvertCurrency(
ctx,
baseAssetTicker,
referenceCurrency,
)
basePriceInRefCurrency = quotePriceInRefCurrency.Mul(mktPrice.BasePrice)
}
}
case !isBaseAssetStable && !isQuoteAssetStable:
if baseAssetTickerFound && quoteAssetTickerFound {
basePriceInRefCurrency, _ = m.raterSvc.ConvertCurrency(
ctx,
baseAssetTicker,
referenceCurrency,
)
basePriceInRefCurrency = quotePriceInRefCurrency.Mul(mktPrice.BasePrice)
quotePriceInRefCurrency, _ = m.raterSvc.ConvertCurrency(
ctx,
quoteAssetTicker,
referenceCurrency,
)
}
case !isBaseAssetStable && !isQuoteAssetStable:
basePriceInRefCurrency, _ = m.raterSvc.ConvertCurrency(
ctx,
baseAssetTicker,
referenceCurrency,
)
quotePriceInRefCurrency, _ = m.raterSvc.ConvertCurrency(
ctx,
quoteAssetTicker,
referenceCurrency,
)

// TODO: uncomment this when we find a way to convert the prices of a
// market with no stable coins to ref currency in case we fail to retrieve
Expand Down

0 comments on commit db40d01

Please sign in to comment.