#!/usr/bin/env python3 """ Script pour tester le webhook N8N Usage: python3 test-n8n-python.py [MISSION_ID] [PROJECT_NAME] """ import urllib.request import json import os import sys # Charger .env.local env_vars = {} if os.path.exists('.env.local'): with open('.env.local') as f: for line in f: if '=' in line and not line.strip().startswith('#'): key, value = line.strip().split('=', 1) env_vars[key] = value # ParamΓ¨tres depuis la ligne de commande ou variables d'environnement mission_id = sys.argv[1] if len(sys.argv) > 1 else os.environ.get('MISSION_ID', '3103ec1a-acde-4025-9ead-4e1a0ddc047c') project_name = sys.argv[2] if len(sys.argv) > 2 else os.environ.get('PROJECT_NAME', 'SEFFIR') webhook_url = "https://brain.slm-lab.net/webhook-test/mission-created" api_key = env_vars.get('N8N_API_KEY', os.environ.get('N8N_API_KEY')) api_url = env_vars.get('NEXT_PUBLIC_API_URL', os.environ.get('NEXT_PUBLIC_API_URL', 'https://hub.slm-lab.net/api')) if not api_key: print("❌ Erreur: N8N_API_KEY n'est pas dΓ©finie") print(" VΓ©rifiez votre fichier .env.local ou exportez N8N_API_KEY") sys.exit(1) print(f"πŸ§ͺ Test du webhook N8N") print(f"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") print(f"Webhook URL: {webhook_url}") print(f"Mission ID: {mission_id}") print(f"Project Name: {project_name}") print(f"") data = { "name": project_name, "oddScope": ["odd-4"], "niveau": "s", "intention": "", "missionType": "remote", "donneurDOrdre": "group", "projection": "long", "services": [], "participation": "ouvert", "profils": [], "guardians": {}, "volunteers": [], "creatorId": "203cbc91-61ab-47a2-95d2-b5e1159327d7", "missionId": mission_id, "logoPath": f"missions/{mission_id}/logo.png", "logoUrl": f"https://hub.slm-lab.net/api/missions/image/missions/{mission_id}/logo.png", "config": { "N8N_API_KEY": api_key, "MISSION_API_URL": api_url } } req = urllib.request.Request( webhook_url, data=json.dumps(data).encode('utf-8'), headers={'Content-Type': 'application/json'} ) try: with urllib.request.urlopen(req) as response: print(f"βœ… Status: {response.status} {response.reason}") print(f"πŸ“„ RΓ©ponse:") response_data = json.loads(response.read().decode('utf-8')) print(json.dumps(response_data, indent=2)) except urllib.error.HTTPError as e: print(f"❌ HTTP Error {e.code}: {e.reason}") try: error_body = e.read().decode('utf-8') print(f"πŸ“„ Corps de l'erreur:") print(json.dumps(json.loads(error_body), indent=2)) except: print(error_body) sys.exit(1) except Exception as e: print(f"❌ Erreur: {e}") sys.exit(1)