From 97de4eda18a2637c960613da11ce222af9b09775 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dni=20=E2=9A=A1?= Date: Fri, 26 Jul 2024 11:31:24 +0200 Subject: [PATCH] feat: add `exclude_to` list for btcprice providers (#2602) --- lnbits/utils/exchange_rates.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lnbits/utils/exchange_rates.py b/lnbits/utils/exchange_rates.py index daa75b93..c1ef9d35 100644 --- a/lnbits/utils/exchange_rates.py +++ b/lnbits/utils/exchange_rates.py @@ -191,6 +191,7 @@ class Provider(NamedTuple): domain: str api_url: str getter: Callable + exclude_to: list = [] exchange_rate_providers = { @@ -200,6 +201,7 @@ exchange_rate_providers = { "binance.com", "https://api.binance.com/api/v3/ticker/price?symbol={FROM}{TO}", lambda data, replacements: data["price"], + ["czk"], ), "blockchain": Provider( "Blockchain", @@ -212,18 +214,21 @@ exchange_rate_providers = { "exir.io", "https://api.exir.io/v1/ticker?symbol={from}-{to}", lambda data, replacements: data["last"], + ["czk", "eur"], ), "bitfinex": Provider( "Bitfinex", "bitfinex.com", "https://api.bitfinex.com/v1/pubticker/{from}{to}", lambda data, replacements: data["last_price"], + ["czk"], ), "bitstamp": Provider( "Bitstamp", "bitstamp.net", "https://www.bitstamp.net/api/v2/ticker/{from}{to}/", lambda data, replacements: data["last"], + ["czk"], ), "coinbase": Provider( "Coinbase", @@ -242,6 +247,7 @@ exchange_rate_providers = { "kraken.com", "https://api.kraken.com/0/public/Ticker?pair=XBT{TO}", lambda data, replacements: data["result"]["XXBTZ" + replacements["TO"]]["c"][0], + ["czk"], ), } @@ -255,6 +261,9 @@ async def btc_price(currency: str) -> float: } async def fetch_price(provider: Provider): + if currency.lower() in provider.exclude_to: + raise Exception(f"Provider {provider.name} does not support {currency}.") + url = provider.api_url.format(**replacements) try: headers = {"User-Agent": settings.user_agent}