diff --git a/crypto_portfolio.py b/crypto_portfolio.py index 6929b08..30e5c76 100644 --- a/crypto_portfolio.py +++ b/crypto_portfolio.py @@ -9,8 +9,12 @@ import mplfinance as mpf # a chave da API 'CHAVE_API_DEMO' if not os.path.exists('modulos/constantes.py'): chave_api = input('Introduza a chave da API Demo de CoinGecko: ') - with open('modulos/constantes.py', 'w') as f: - f.write(f'CHAVE_API_DEMO = \'{chave_api}\'\n') + if (not aux.validarChaveAPI(chave_api)): + print(f'erro na validação da chave API {chave_api}') + quit() + else: + with open('modulos/constantes.py', 'w') as f: + f.write(f'CHAVE_API_DEMO = \'{chave_api}\'\n') import modulos.coingecko_api as cgapi diff --git a/modulos/aux.py b/modulos/aux.py index 82b4e0b..270b52c 100644 --- a/modulos/aux.py +++ b/modulos/aux.py @@ -2,6 +2,7 @@ import csv + # gravar dados importados para ficheiro csv def gravar_dados_ficheiro_csv( nome_ficheiro: str, @@ -13,7 +14,7 @@ def gravar_dados_ficheiro_csv( Args: nome_ficheiro (str): O nome do ficheiro CSV. - dados_importados (list): Uma lista de dicionários com os dados a serem + dados_importados (list): Uma lista de dicionários com os dados a serem gravados. campos (list): Uma lista com os nomes dos campos a serem gravados. @@ -30,7 +31,7 @@ def gravar_dados_ficheiro_csv( raise ValueError('\'dados_importados\' não é do tipo \'list\'') if not isinstance(campos, list): raise ValueError('\'campos\' não é do tipo \'list\'') - + with open(nome_ficheiro, 'w', newline='') as ficheiro_csv_historico_precos: ficheiroCSV = csv.DictWriter( ficheiro_csv_historico_precos, @@ -38,6 +39,7 @@ def gravar_dados_ficheiro_csv( ficheiroCSV.writeheader() ficheiroCSV.writerows(dados_importados) + # carregar dados de ficheiro csv e guardar em lista def carregar_dados_ficheiro_csv( nome_ficheiro: str, @@ -48,7 +50,7 @@ def carregar_dados_ficheiro_csv( Args: nome_ficheiro (str): O nome do ficheiro CSV. - campos (list): Uma lista de nomes de campos correspondentes aos + campos (list): Uma lista de nomes de campos correspondentes aos chaves dos dicionários. Raises: @@ -63,7 +65,7 @@ def carregar_dados_ficheiro_csv( raise ValueError('\'nome_ficheiro\' não é do tipo \'str\'') if not isinstance(campos, list): raise ValueError('\'campos\' não é do tipo \'list\'') - + with open(nome_ficheiro, 'r', newline='') as ficheiro_csv_historico_precos: ficheiroCSV = csv.DictReader( ficheiro_csv_historico_precos, @@ -71,4 +73,17 @@ def carregar_dados_ficheiro_csv( lista_linhas_ficheiro_csv: list = [] for linha in ficheiroCSV: lista_linhas_ficheiro_csv.append(linha) - return lista_linhas_ficheiro_csv \ No newline at end of file + return lista_linhas_ficheiro_csv + + +# validar chave API http://192.168.1.131:3000/sanctus/crypto_portfolio/issues/1 +def validarChaveAPI(chave_api: str) -> bool: + # remover espaços em branco + chave_api.strip() + # chave invalida se tamanho for diferente de 27 ('CG-' + 24) + if len(chave_api) != 27: + return False + # chave inválida se primeiros 3 caracteres forem diferentes de 'CG-' + if len(chave_api) >= 3 and chave_api[0:3] != 'CG-': + return False + return True