126 lines
No EOL
4.4 KiB
Python
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() |