mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 20:14:08 +00:00
Fix Twelve Data API parsing errors causing "Current Market Price Unknown" (#224)
* Add tests and fix for Twelve Data API parsing errors * Fix search_securities to handle nil data key --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com> Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
This commit is contained in:
@@ -62,7 +62,15 @@ class Provider::TwelveData < Provider
|
||||
req.params["interval"] = "1day"
|
||||
end
|
||||
|
||||
data = JSON.parse(response.body).dig("values")
|
||||
parsed = JSON.parse(response.body)
|
||||
data = parsed.dig("values")
|
||||
|
||||
if data.nil?
|
||||
error_message = parsed.dig("message") || "No data returned"
|
||||
error_code = parsed.dig("code") || "unknown"
|
||||
raise InvalidExchangeRateError, "API error (code: #{error_code}): #{error_message}"
|
||||
end
|
||||
|
||||
data.map do |resp|
|
||||
rate = resp.dig("close")
|
||||
date = resp.dig("datetime")
|
||||
@@ -88,8 +96,15 @@ class Provider::TwelveData < Provider
|
||||
end
|
||||
|
||||
parsed = JSON.parse(response.body)
|
||||
data = parsed.dig("data")
|
||||
|
||||
parsed.dig("data").map do |security|
|
||||
if data.nil?
|
||||
error_message = parsed.dig("message") || "No data returned"
|
||||
error_code = parsed.dig("code") || "unknown"
|
||||
raise Error, "API error (code: #{error_code}): #{error_message}"
|
||||
end
|
||||
|
||||
data.map do |security|
|
||||
country = ISO3166::Country.find_country_by_any_name(security.dig("country"))
|
||||
|
||||
Security.new(
|
||||
@@ -152,7 +167,15 @@ class Provider::TwelveData < Provider
|
||||
end
|
||||
|
||||
parsed = JSON.parse(response.body)
|
||||
parsed.dig("values").map do |resp|
|
||||
values = parsed.dig("values")
|
||||
|
||||
if values.nil?
|
||||
error_message = parsed.dig("message") || "No data returned"
|
||||
error_code = parsed.dig("code") || "unknown"
|
||||
raise InvalidSecurityPriceError, "API error (code: #{error_code}): #{error_message}"
|
||||
end
|
||||
|
||||
values.map do |resp|
|
||||
price = resp.dig("close")
|
||||
date = resp.dig("datetime")
|
||||
if price.nil?
|
||||
|
||||
Reference in New Issue
Block a user