chore: Simplify coingecko wrapper after update

This commit is contained in:
Matthias
2024-11-18 07:11:39 +01:00
parent 73adbe9e0c
commit 971cdbb918
2 changed files with 8 additions and 19 deletions

View File

@@ -4,23 +4,10 @@ from pycoingecko import CoinGeckoAPI
class FtCoinGeckoApi(CoinGeckoAPI):
"""
Simple wrapper around pycoingecko's api to support Demo API keys.
"""
__API_URL_BASE = "https://api.coingecko.com/api/v3/"
__PRO_API_URL_BASE = "https://pro-api.coingecko.com/api/v3/"
_api_key: str = ""
def __init__(self, api_key: str = "", *, is_demo=True, retries=5):
super().__init__(retries=retries)
# Don't pass api_key to parent, instead set the header on the session directly
self._api_key = api_key
if api_key and not is_demo:
self.api_base_url = self.__PRO_API_URL_BASE
self.session.params.update({"x_cg_pro_api_key": api_key})
if api_key and is_demo:
super().__init__(retries=retries, demo_api_key=api_key)
else:
# Use demo api key
self.api_base_url = self.__API_URL_BASE
if api_key:
self.session.params.update({"x_cg_demo_api_key": api_key})
super().__init__(api_key=api_key, retries=retries)

View File

@@ -206,14 +206,16 @@ def test_convert_amount(mocker):
def test_FtCoinGeckoApi():
ftc = FtCoinGeckoApi()
assert ftc._api_key == ""
assert ftc.extra_params is None
assert ftc.api_base_url == "https://api.coingecko.com/api/v3/"
# defaults to demo
ftc = FtCoinGeckoApi(api_key="123456")
assert ftc._api_key == "123456"
assert ftc.extra_params is not None
assert ftc.extra_params["x_cg_demo_api_key"] == "123456"
assert ftc.api_base_url == "https://api.coingecko.com/api/v3/"
ftc = FtCoinGeckoApi(api_key="123456", is_demo=False)
assert ftc._api_key == "123456"
assert ftc.extra_params is not None
assert ftc.extra_params["x_cg_pro_api_key"] == "123456"
assert ftc.api_base_url == "https://pro-api.coingecko.com/api/v3/"