Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 28 additions & 9 deletions pkg/scraper/twelvedata.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,9 +175,10 @@ func (scraper *TwelvedataScraper) UpdateQuotations() error {
}

quote, err := getRwaQuoteFromDia(symbol, "Equities")
// Fetch data from twelvedata API in case diadata API fails and a twelvedata api key was provided.
if err != nil && scraper.apiKey != "" {
log.Warn("")
// Fetch data from twelvedata API in case diadata API fails or returns an empty quote,
// and a twelvedata api key was provided.
if (err != nil || quote.Price == 0) && scraper.apiKey != "" {
log.Debugf("quote for %s not available in diadata api. Switch to twelvdata api.", symbol)
quotation, err := scraper.getTwelveStockPrice(symbol)
if err != nil {
log.Error("getTwelveStockPrice: ", err)
Expand All @@ -189,6 +190,12 @@ func (scraper *TwelvedataScraper) UpdateQuotations() error {
quote.Symbol = symbol
quote.Price = price
quote.Time = time.Now()
} else if err != nil {
continue
}
if quote.Price == 0 {
log.Warnf("no valid price for %s from any source. Skip update.", symbol)
continue
}
quote.Source = TWELVEDATA
quote.Type = Equities
Expand All @@ -210,8 +217,8 @@ func (scraper *TwelvedataScraper) UpdateQuotations() error {
}

quote, err := getRwaQuoteFromDia(ticker, "Fiat")
if err != nil && scraper.apiKey != "" {
log.Warnf("quote for %s not available in diadata api. Switch to twelvdata api.", ticker)
if (err != nil || quote.Price == 0) && scraper.apiKey != "" {
log.Debugf("quote for %s not available in diadata api. Switch to twelvdata api.", ticker)
quotation, err := scraper.getTwelveFXData(ticker)
if err != nil {
log.Error("getTwelveFXData: ", err)
Expand All @@ -222,6 +229,10 @@ func (scraper *TwelvedataScraper) UpdateQuotations() error {
} else if err != nil {
continue
}
if quote.Price == 0 {
log.Warnf("no valid price for %s from any source. Skip update.", ticker)
continue
}

quote.Source = TWELVEDATA
quote.Type = Fiat
Expand All @@ -241,8 +252,8 @@ func (scraper *TwelvedataScraper) UpdateQuotations() error {
}

quote, err := getRwaQuoteFromDia(ticker, "Commodities")
if err != nil && scraper.apiKey != "" {
log.Warnf("quote for %s not available in diadata api. Switch to twelvdata api.", ticker)
if (err != nil || quote.Price == 0) && scraper.apiKey != "" {
log.Debugf("quote for %s not available in diadata api. Switch to twelvdata api.", ticker)
quotation, err := scraper.getTwelveQuote(ticker, true)
if err != nil {
log.Error("getTwelveCommoditiesData: ", err)
Expand All @@ -261,6 +272,10 @@ func (scraper *TwelvedataScraper) UpdateQuotations() error {
} else if err != nil {
continue
}
if quote.Price == 0 {
log.Warnf("no valid price for %s from any source. Skip update.", ticker)
continue
}

quote.Source = TWELVEDATA
quote.Type = Commodities
Expand All @@ -279,8 +294,8 @@ func (scraper *TwelvedataScraper) UpdateQuotations() error {
}

quote, err := getRwaQuoteFromDia(ticker, "ETF")
if err != nil && scraper.apiKey != "" {
log.Warnf("quote for %s not available in diadata api. Switch to twelvdata api.", ticker)
if (err != nil || quote.Price == 0) && scraper.apiKey != "" {
log.Debugf("quote for %s not available in diadata api. Switch to twelvdata api.", ticker)
quotation, err := scraper.getTwelveQuote(ticker, false)
if err != nil {
log.Error("getTwelveETFData: ", err)
Expand All @@ -299,6 +314,10 @@ func (scraper *TwelvedataScraper) UpdateQuotations() error {
} else if err != nil {
continue
}
if quote.Price == 0 {
log.Warnf("no valid price for %s from any source. Skip update.", ticker)
continue
}

quote.Source = TWELVEDATA
quote.Type = ETF
Expand Down
Loading