From 7ed284f09fa8253e50cdf600393beb94092bdd09 Mon Sep 17 00:00:00 2001 From: "[Luis Rodrigues]" Date: Sat, 15 Jun 2024 12:55:08 +0100 Subject: [PATCH] adicionada chamada 'coin_historical_chart_data_by_token_address()' --- modulos/coingecko_api.py | 92 ++++++++++++++++++++++++++++++++++------ 1 file changed, 80 insertions(+), 12 deletions(-) diff --git a/modulos/coingecko_api.py b/modulos/coingecko_api.py index 14150b4..7642079 100644 --- a/modulos/coingecko_api.py +++ b/modulos/coingecko_api.py @@ -833,7 +833,7 @@ def coin_ohlc_chart_by_id( def coin_data_by_token_address( - id_criptomoeda: str = '', + id_platform: str = '', contract_address: str = '' ) -> tuple: '''https://docs.coingecko.com/v3.0.1/reference/coins-contract-address @@ -848,12 +848,12 @@ def coin_data_by_token_address( 'contract_address': '', } # validação de parametros - # id_criptomoeda (como 'id' é nome reservado, foi usado outro nome) - if not isinstance(id_criptomoeda, str): - raise TypeError('\'id_criptomoeda\' tem de ser do tipo \'str\'') - if id_criptomoeda == '': - raise ValueError('\'id_criptomoeda\' tem de ser definido') - api_parameters['id'] = id_criptomoeda + # id_platform (como 'id' é nome reservado, foi usado outro nome) + if not isinstance(id_platform, str): + raise TypeError('\'id_platform\' tem de ser do tipo \'str\'') + if id_platform == '': + raise ValueError('\'id_platform\' tem de ser definido') + api_parameters['id'] = id_platform # contract_address if not isinstance(contract_address, str): raise TypeError('\'contract_address\' tem de ser do tipo \'str\'') @@ -874,16 +874,84 @@ def coin_data_by_token_address( # print(f'erro {codigo}: {dados}') -def coin_historical_chart_data_by_token_address() -> tuple: - pass +def coin_historical_chart_data_by_token_address( + id_platform: str = '', + contract_address: str = '', + vs_currency: str = '', + days: str = '', + interval: str = '', + precision: str | int = 'full' +) -> tuple: + '''https://docs.coingecko.com/v3.0.1/reference/contract-address-market-chart + + este endpoint permite consultar dados historicos graficos incluindo tempo UNIX, + preco, capitalização de mercado e volume 24hrs a partir da plataforma do activo e + endereco de contracto do token + ''' + # dicionario parameters + api_parameters: dict = { + 'id': '', + 'contract_address': '', + 'vs_currency': '', + 'days': '', + 'interval': '', + 'precision': '', + } + # validacao de parametros + # id_platform (como 'id' é nome reservado, foi usado outro nome) + if not isinstance(id_platform, str): + raise TypeError('\'id_platform\' tem de ser do tipo \'str\'') + if id_platform == '': + raise ValueError('\'id_platform\' tem de ser definido') + api_parameters['id'] = id_platform + # contract_address + if not isinstance(contract_address, str): + raise TypeError('\'contract_address\' tem de ser do tipo \'str\'') + if contract_address == '': + raise ValueError('\'contract_address\' tem de ser definido') + api_parameters['contract_address'] = contract_address + # vs_currency + if not isinstance(vs_currency, str): + raise TypeError('\'vs_currency\' tem de ser do tipo \'str\'') + if vs_currency == '': + raise ValueError('\'vs_currency\' tem de ser definido') + api_parameters['vs_currency'] = vs_currency + # days + if not isinstance(days, str): + raise TypeError('\'days\' tem de ser do tipo \'str\'') + if days == '': + raise ValueError('\'days\' tem de ser definido') + api_parameters['days'] = days + # interval + if not isinstance(interval, str): + raise TypeError('\'interval\' tem de ser do tipo \'str\'') + api_parameters['interval'] = interval + # precision + if not isinstance(precision, (str, int)): + raise TypeError('\'precision\' tem de ser do tipo \'(str, int)\'') + if isinstance(precision, str): + if precision != 'full': + precision = 'full' + if precision == 'full': + precision = '18' + precision = int(precision) + if isinstance(precision, int): + if precision < 0: + precision = 0 + if precision > 18: + precision = 18 + precision = str(precision) + api_parameters['precision'] = precision + + return API(f'coins/{api_parameters['id']}/contract/{api_parameters['contract_address']}/market_chart', api_parameters) # debug (decomentar linhas seguintes para testar funcao) -# url, codigo, dados = +# url, codigo, dados = coin_historical_chart_data_by_token_address('ethereum','0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48','eur','1') # print(f'url: {url}') -# if codigo == 200: +# if codigo == 200: # for item in dados: -# print(item) +# print(f'{item}: {dados[item]}') # else: # print(f'erro {codigo}: {dados}')