-
Notifications
You must be signed in to change notification settings - Fork 4
Home
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
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.
git clone [email protected]:maxence.renaud/soapy.git
cd soapy
bash install.sh
Vous pouvez :
- soit utiliser votre propre certificat,
- soit utiliser le proxy NM B2B offert par Benjamin Béret ().
- copier/coller votre certificat se terminant par
.p12
dans le répertoirecert
, - 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 desoapy
dans le cas où vous contriburiez au projet (vous pouvez vous en assurer avec le.gitignore
).
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
.
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)