py_atmo_data_wrapper/examples/setup_credentials.py
2025-07-14 17:56:57 +02:00

126 lines
No EOL
4.4 KiB
Python

#!/usr/bin/env python3
"""
Script d'aide à la configuration des credentials
"""
import json
import os
import shutil
from getpass import getpass
def setup_credentials():
"""Guide l'utilisateur pour configurer ses credentials"""
print("=== Configuration des credentials Atmo Data ===\n")
credentials_file = "credentials.json"
example_file = "credentials.json.example"
# Vérifier si le fichier existe déjà
if os.path.exists(credentials_file):
response = input(f"Le fichier {credentials_file} existe déjà. Le remplacer ? (y/n): ")
if response.lower() != 'y':
print("Configuration annulée.")
return
# Vérifier la présence du fichier exemple
if not os.path.exists(example_file):
print(f"❌ Fichier exemple {example_file} manquant.")
print("Création du fichier exemple...")
example_content = {
"username": "votre_nom_utilisateur",
"password": "votre_mot_de_passe",
"api_url": "https://api.atmo-data.org"
}
with open(example_file, 'w', encoding='utf-8') as f:
json.dump(example_content, f, indent=2, ensure_ascii=False)
print(f"✅ Fichier {example_file} créé.")
print("\nSaisie des credentials :")
print("(Laissez vide pour utiliser la valeur par défaut)")
# Charger les valeurs par défaut depuis l'exemple
try:
with open(example_file, 'r', encoding='utf-8') as f:
defaults = json.load(f)
except:
defaults = {}
# Saisie interactive
username = input(f"Nom d'utilisateur [{defaults.get('username', '')}]: ").strip()
if not username:
username = defaults.get('username', '')
password = getpass(f"Mot de passe [{defaults.get('password', '')}]: ").strip()
if not password:
password = defaults.get('password', '')
api_url = input(f"URL de l'API [{defaults.get('api_url', 'https://api.atmo-data.org')}]: ").strip()
if not api_url:
api_url = defaults.get('api_url', 'https://api.atmo-data.org')
# Vérifier que les champs obligatoires sont remplis
if not username or not password:
print("❌ Le nom d'utilisateur et le mot de passe sont obligatoires.")
return False
# Créer le fichier credentials
credentials = {
"username": username,
"password": password,
"api_url": api_url
}
try:
with open(credentials_file, 'w', encoding='utf-8') as f:
json.dump(credentials, f, indent=2, ensure_ascii=False)
print(f"\n✅ Fichier {credentials_file} créé avec succès !")
print("\nPour tester votre configuration :")
print(" python test_real_connection.py")
# Vérifier que le fichier est dans .gitignore
gitignore_file = ".gitignore"
if os.path.exists(gitignore_file):
with open(gitignore_file, 'r') as f:
content = f.read()
if credentials_file not in content:
print(f"\n⚠️ Attention: {credentials_file} n'est pas dans .gitignore")
add_to_gitignore = input("Ajouter à .gitignore ? (y/n): ")
if add_to_gitignore.lower() == 'y':
with open(gitignore_file, 'a') as f:
f.write(f"\n# Fichiers de credentials\n{credentials_file}\n")
print("✅ Ajouté à .gitignore")
return True
except Exception as e:
print(f"❌ Erreur lors de la création du fichier: {e}")
return False
def test_configuration():
"""Test rapide de la configuration"""
print("\n=== Test de la configuration ===")
try:
from atmo_data_wrapper import AtmoDataClient
client = AtmoDataClient()
credentials = client._load_credentials()
print("✅ Fichier credentials.json lu avec succès")
print(f" Nom d'utilisateur: {credentials['username']}")
print(f" URL API: {credentials.get('api_url', 'URL par défaut')}")
# Test de connexion (simulation)
print("\nPour tester la connexion réelle à l'API, exécutez :")
print(" python test_real_connection.py")
except Exception as e:
print(f"❌ Erreur lors du test: {e}")
if __name__ == "__main__":
success = setup_credentials()
if success:
test_configuration()