Treninoo API è il backend di supporto per Treninoo.
Il backend è stata scritta con il framework AdonisJS.
Per poter eseguire il codice nel proprio computer è necessario:
-
Clonare la repository
git clone https://github.com/c0c4i/treninoo-api.git
-
Eseguire il codice
yarn dev
È necessario avere il file .env con le variabili necessarie che sono le seguenti
PORT=3333
HOST=0.0.0.0
BASE_URL=http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno
NODE_ENV=development
APP_KEY=
DRIVE_DISK=localGET /departurestation/:traincodeLa risposta è data nel seguente formato
{
"url": "http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/cercaNumeroTrenoTrenoAutocomplete/35",
"total": 2,
"stations": [
{
"stationCode": "S01003",
"stationName": "DOMODOSSOLA",
"priority": 2
},
{
"stationCode": "N00001",
"stationName": "MILANO NORD CADORNA",
"priority": 2
}
]
}Questa chiamata è necessaria perché per conoscere lo stato di un treno è necessario avere il codice della stazione di partenza.
Questo perché alcuni treni in Italia hanno lo stesso numero.
Questa chiamata migliora quella originale restituendo un file JSON con i campi necessari e non una risposta testuale fatta male.
GET /autocomplete/:wordLa risposta è data nel seguente formato
{
"url": "http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/autocompletaStazione/verona%20porta",
"total": 2,
"stations": [
{
"stationCode": "S02430",
"stationName": "VERONA PORTA NUOVA",
"priority": 1
},
{
"stationCode": "S02433",
"stationName": "VERONA PORTA VESCOVO",
"priority": 3
}
]
}Questa chiamata è stata modificata rispetto alla chiamata originale perché viene fatto un mapping e ordinato per priorità, in questo modo se noi cerchiamo la parola VER non avremo come primo risultato vErGiNeSe (chissà dov'è questa stazione e se esiste) ma avremo giustamente VERONA PORTA NUOVA.
GET /details/:departureStation/:trainCodeLa risposta è data nel seguente formato
{
"url": "http://www.viaggiatreno.it/infomobilita/resteasy/viaggiatreno/andamentoTreno/S01003/35/1652026491969",
"status": {
"trainType": "EC",
"trainCode": 35,
"stops": [
{
"stationCode": "S01003",
"stationName": "DOMODOSSOLA",
"plannedDepartureTime": 1651990620000,
"actualDepartureTime": 1651990680000,
"plannedArrivalTime": null,
"actualArrivalTime": 1651990140000,
"plannedDepartureRail": "3",
"actualDepartureRail": "3",
"plannedArrivalRail": "3",
"actualArrivalRail": "3",
"delay": 1
},
{
"stationCode": "S01016",
"stationName": "STRESA",
"plannedDepartureTime": 1651992060000,
"actualDepartureTime": 1651992120000,
"plannedArrivalTime": 1651991940000,
"actualArrivalTime": 1651992000000,
"plannedDepartureRail": "1",
"actualDepartureRail": "1",
"plannedArrivalRail": "1",
"actualArrivalRail": "1",
"delay": 1
},
{
"stationCode": "S01700",
"stationName": "MILANO CENTRALE",
"plannedDepartureTime": null,
"actualDepartureTime": null,
"plannedArrivalTime": 1651995600000,
"actualArrivalTime": 1651995180000,
"plannedDepartureRail": null,
"actualDepartureRail": null,
"plannedArrivalRail": "3",
"actualArrivalRail": "3",
"delay": -7
}
]
}
}Questa risposta è una ristrutturazione dell'originale togliendo tutti i campi inutili.
È ancora in sviluppo per l'aggiunta di altri campi necessari per lo stato del treno. Un esempio è il
currentDelayche non è ancora presente.
GET /solutions/:departureCode/:arrivalCode/:dateGET /stations/:stationCodeGET /details/:departureStation/:trainCodeEndpoint già esistente ma da sistemare per avere tutti i dati necessari.
È in fase di sviluppo la funzionalità per poter seguire un treno e riceve una notifica in app.
Nessuno ma se volete aiutare siete i benvenuti, scrivetemi pure una email.
Copyright 2023 Samuele Besoli. Code released under the MIT license.