adicionada chamada 'coin_historical_chart_data_by_token_address()'

This commit is contained in:
2024-06-15 12:55:08 +01:00
parent 617b46724a
commit 7ed284f09f

View File

@ -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 = <nome_chamada_api()>
# url, codigo, dados = coin_historical_chart_data_by_token_address('ethereum','0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48','eur','1')
# print(f'url: {url}')
# if codigo == 200:
# for item in dados:
# print(item)
# print(f'{item}: {dados[item]}')
# else:
# print(f'erro {codigo}: {dados}')