#!/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()