Skip to content
KrazyMax edited this page Oct 22, 2019 · 2 revisions

Module d'accès au B2B NM via la librairie Zeep, écrit en Python. En cours de réalisation

Pré-requis

Avoir une version récente de python3 d'installée (>3.7 recommandé). Une erreur sera levée si vous n'avez pas une telle version de Python.

Installation

git clone [email protected]:maxence.renaud/soapy.git
cd soapy
bash install.sh

Certificat B2B NM

Vous pouvez :

  • soit utiliser votre propre certificat,
  • soit utiliser le proxy NM B2B offert par Benjamin Béret ().

Utilisation de votre propre certificat

  • copier/coller votre certificat se terminant par .p12 dans le répertoire cert,
  • exécuter le script set_cert_key.sh (vous aurez besoin du mot de passe associé au certificat) :
bash set_cert_key.sh
  • soapy est maintenant prêt à être utilisé ! Rassurez-vous, ce certificat ne sera pas visible des autres utilisateurs de soapy dans le cas où vous contriburiez au projet (vous pouvez vous en assurer avec le .gitignore).

Utilisation du proxy NM B2B

Dans le cas où vous utiliser le proxy de Benjamin, vous devrez ajouter à votre environnement les 2 variables suivantes, fournies par Benjamin :

  • NM_B2B_API_KEY_ID,
  • NM_B2B_API_SECRET.

Utilisation

Pour utiliser les fonctionnalités offertes par soapy, tout passe par le manager.

from soapy.manager import Manager
import datetime

# on instancie son propre manager
test_manager = Manager()                   # si utilisation du proxy b2b NM
test_manager = Manager(how_to_auth='cert') # si utilisation de votre propre certificat

# pour afficher les différents services disponibles
test_manager.show_available_services()

# pour afficher les différentes opérations disponibles pour un service particulier
test_manager.show_operations_of_service(service_name='FlightManagementService')

# startTime et endTime peuvent être des objets datetime.datetime ou des str au format AAAA-MM-JJ HH:MM
# attention : startTime et endTime doivent être exprimées en heures UTC
startTime=datetime.datetime(year=2019, month=10, day=21, hour=14, minute=30, tzinfo=datetime.timezone.utc)
endTime=  datetime.datetime(year=2019, month=10, day=21, hour=15, minute=30, tzinfo=datetime.timezone.utc)

# on précise les champs qui nous intéressent pour des requêtes de listes de vols 
# (requestedFlightFields, voir doc NM), et si nécessaire on override les valeurs 
# par défaut pour la requête (voir _default_params_for_queries dans le code source de Manager).
other_params = {
    'requestedFlightFields': ['flightState', 'cfmuFlightType']
}

# pour afficher une liste de vols pour un terrain donné
flight_list = test_manager.queryFlightsByAerodrome(
    aerodrome="LFPG",
    aerodromeRole="DEPARTURE",
    startTime=startTime, endTime=endTime,
    other_params=other_params)
print(flight_list.data)

# pour afficher une liste de vols pour un Traffic Volume donné
flight_list = test_manager.queryFlightsByTrafficVolume(
    trafficVolume='LFFTN',
    startTime=startTime, endTime=endTime,
    other_params=other_params)
print(flight_list.data)