Files
adif-api-reverse-engineering/test_all_endpoints.py

160 lines
4.6 KiB
Python

#!/usr/bin/env python3
"""
Probar todos los endpoints de circulaciones para ver cuáles funcionan
"""
import requests
from adif_auth import AdifAuthenticator
import uuid
ACCESS_KEY = "and20210615"
SECRET_KEY = "Jthjtr946RTt"
def test_endpoint(name, url, payload):
"""
Prueba un endpoint y retorna True si funciona
"""
auth = AdifAuthenticator(access_key=ACCESS_KEY, secret_key=SECRET_KEY)
user_id = str(uuid.uuid4())
headers = auth.get_auth_headers("POST", url, payload, user_id=user_id)
headers["User-key"] = auth.USER_KEY_CIRCULATION
try:
response = requests.post(url, json=payload, headers=headers, timeout=10)
status = "" if response.status_code == 200 else ""
print(f"{status} {name}: {response.status_code}")
return response.status_code == 200
except Exception as e:
print(f"{name}: Error - {e}")
return False
print("="*70)
print("PRUEBA DE TODOS LOS ENDPOINTS DE CIRCULACIONES")
print("="*70)
print()
# 1. Departures
print("1. Departures:")
test_endpoint(
"Departures",
"https://circulacion.api.adif.es/portroyalmanager/secure/circulationpaths/departures/traffictype/",
{
"commercialService": "BOTH",
"commercialStopType": "BOTH",
"page": {"pageNumber": 0},
"stationCode": "10200",
"trafficType": "ALL"
}
)
# 2. Arrivals
print("\n2. Arrivals:")
test_endpoint(
"Arrivals",
"https://circulacion.api.adif.es/portroyalmanager/secure/circulationpaths/arrivals/traffictype/",
{
"commercialService": "BOTH",
"commercialStopType": "BOTH",
"page": {"pageNumber": 0},
"stationCode": "10200",
"trafficType": "ALL"
}
)
# 3. BetweenStations
print("\n3. BetweenStations:")
test_endpoint(
"BetweenStations",
"https://circulacion.api.adif.es/portroyalmanager/secure/circulationpaths/betweenstations/traffictype/",
{
"commercialService": "BOTH",
"commercialStopType": "BOTH",
"originStationCode": "10200",
"destinationStationCode": "71801",
"page": {"pageNumber": 0},
"trafficType": "ALL"
}
)
# 4. OnePaths
print("\n4. OnePaths:")
test_endpoint(
"OnePaths",
"https://circulacion.api.adif.es/portroyalmanager/secure/circulationpathdetails/onepaths/",
{
"allControlPoints": True,
"commercialNumber": None,
"destinationStationCode": "71801",
"launchingDate": 1733356800000,
"originStationCode": "10200"
}
)
# 5. SeveralPaths
print("\n5. SeveralPaths:")
test_endpoint(
"SeveralPaths",
"https://circulacion.api.adif.es/portroyalmanager/secure/circulationpathdetails/severalpaths/",
{
"allControlPoints": True,
"commercialNumber": None,
"destinationStationCode": "71801",
"launchingDate": 1733356800000,
"originStationCode": "10200"
}
)
# 6. Compositions
print("\n6. Compositions:")
test_endpoint(
"Compositions",
"https://circulacion.api.adif.es/portroyalmanager/secure/circulationpaths/compositions/path/",
{
"allControlPoints": True,
"commercialNumber": None,
"destinationStationCode": "71801",
"launchingDate": 1733356800000,
"originStationCode": "10200"
}
)
print("\n" + "="*70)
print("PRUEBA DE ENDPOINTS DE ESTACIONES")
print("="*70)
print()
# 7. OneStation
print("7. OneStation:")
auth = AdifAuthenticator(access_key=ACCESS_KEY, secret_key=SECRET_KEY)
user_id = str(uuid.uuid4())
url = "https://estaciones.api.adif.es/portroyalmanager/secure/stations/onestation/"
payload = {
"stationCode": "10200",
"detailedInfo": {
"extendedStationInfo": True,
"stationActivities": True,
"stationBanner": True,
"stationCommercialServices": True,
"stationInfo": True,
"stationServices": True,
"stationTransportServices": True
}
}
headers = auth.get_auth_headers("POST", url, payload, user_id=user_id)
headers["User-key"] = auth.USER_KEY_STATIONS # ← Clave diferente
response = requests.post(url, json=payload, headers=headers, timeout=10)
status = "" if response.status_code == 200 else ""
print(f"{status} OneStation: {response.status_code}")
# 8. StationObservations
print("\n8. StationObservations:")
url = "https://estaciones.api.adif.es/portroyalmanager/secure/stationsobservations/"
payload = {"stationCodes": ["10200", "71801"]}
headers = auth.get_auth_headers("POST", url, payload, user_id=user_id)
headers["User-key"] = auth.USER_KEY_STATIONS
response = requests.post(url, json=payload, headers=headers, timeout=10)
status = "" if response.status_code == 200 else ""
print(f"{status} StationObservations: {response.status_code}")