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:
Copilot
2025-10-24 13:33:06 +02:00
committed by GitHub
parent a8f318c3f9
commit d51ba515c9
2 changed files with 117 additions and 3 deletions

View File

@@ -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?