From 39a975e8a8fe16f9d9f56f53f5e3244f2ebc4521 Mon Sep 17 00:00:00 2001 From: Victor Baranov Date: Mon, 18 Jan 2021 01:38:17 +0300 Subject: [PATCH] Correct UNI token CoinGecko ID --- CHANGELOG.md | 1 + .../exchange_rates/source/coin_gecko.ex | 51 ++++++++++++------- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71f16fe162..cab29720da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Fixes ### Chore +- [#3574](https://github.com/poanetwork/blockscout/pull/3574) - Correct UNI token price - [#3567](https://github.com/poanetwork/blockscout/pull/3567) - Force to show filter at the page where filtered items list is empty - [#3565](https://github.com/poanetwork/blockscout/pull/3565) - Staking dapp: unhealthy state alert message diff --git a/apps/explorer/lib/explorer/exchange_rates/source/coin_gecko.ex b/apps/explorer/lib/explorer/exchange_rates/source/coin_gecko.ex index 13aa427497..a178ab5883 100644 --- a/apps/explorer/lib/explorer/exchange_rates/source/coin_gecko.ex +++ b/apps/explorer/lib/explorer/exchange_rates/source/coin_gecko.ex @@ -124,29 +124,35 @@ defmodule Explorer.ExchangeRates.Source.CoinGecko do end def coin_id(symbol) do - url = "#{base_url()}/coins/list" + id_mapping = bridged_token_symbol_to_id_mapping_to_get_price(symbol) - symbol_downcase = String.downcase(symbol) - - case Source.http_request(url) do - {:ok, data} = resp -> - if is_list(data) do - symbol_data = - Enum.find(data, fn item -> - item["symbol"] == symbol_downcase - end) - - if symbol_data do - {:ok, symbol_data["id"]} + if id_mapping do + {:ok, id_mapping} + else + url = "#{base_url()}/coins/list" + + symbol_downcase = String.downcase(symbol) + + case Source.http_request(url) do + {:ok, data} = resp -> + if is_list(data) do + symbol_data = + Enum.find(data, fn item -> + item["symbol"] == symbol_downcase + end) + + if symbol_data do + {:ok, symbol_data["id"]} + else + {:error, :not_found} + end else - {:error, :not_found} + resp end - else - resp - end - resp -> - resp + resp -> + resp + end end end @@ -172,4 +178,11 @@ defmodule Explorer.ExchangeRates.Source.CoinGecko do defp config(key) do Application.get_env(:explorer, __MODULE__, [])[key] end + + defp bridged_token_symbol_to_id_mapping_to_get_price(symbol) do + case symbol do + "UNI" -> "uniswap" + _symbol -> nil + end + end end