From e7f278574fa1c5f8896791c9444868b7f60760e3 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 20 Dec 2019 18:33:59 +0100 Subject: more travel API documentation --- lib/Travelynx.pm | 5 +++++ lib/Travelynx/Controller/Api.pm | 9 +++++---- templates/api_documentation.html.ep | 12 +++++++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index f1ae8dc..7acb2c2 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -737,6 +737,11 @@ sub startup { my $tx = $db->begin; if ( defined $train ) { + + if ( not $train->arrival ) { + die("Train has no arrival timestamp\n"); + } + $has_arrived = $train->arrival->epoch < $now->epoch ? 1 : 0; my $json = JSON->new; $db->update( diff --git a/lib/Travelynx/Controller/Api.pm b/lib/Travelynx/Controller/Api.pm index f95caa3..427fa2e 100755 --- a/lib/Travelynx/Controller/Api.pm +++ b/lib/Travelynx/Controller/Api.pm @@ -281,7 +281,8 @@ sub travel_v1 { $self->render( json => { success => \0, - error => 'Fehler am Abfahrtsbahnhof: ' + error => + 'Error requesting departures from fromStation: ' . $status->{errstr}, status => $self->get_user_status_json_v1($uid) } @@ -297,7 +298,7 @@ sub travel_v1 { json => { success => \0, deprecated => \0, - error => 'Zug nicht gefunden', + error => 'Train not found at fromStation', status => $self->get_user_status_json_v1($uid) } ); @@ -320,7 +321,7 @@ sub travel_v1 { json => { success => \0, deprecated => \0, - error => $error, + error => 'Checkin/Checkout error: ' . $error, status => $self->get_user_status_json_v1($uid) } ); @@ -362,7 +363,7 @@ sub travel_v1 { json => { success => \0, deprecated => \0, - error => $error, + error => 'Checkout error: ' . $error, status => $self->get_user_status_json_v1($uid) } ); diff --git a/templates/api_documentation.html.ep b/templates/api_documentation.html.ep index a2e5a6c..e5d026f 100644 --- a/templates/api_documentation.html.ep +++ b/templates/api_documentation.html.ep @@ -73,6 +73,10 @@

Checkin per API. Sobald eine Zielstation bekannt ist, erfolgt der Checkout wie beim Webinterface automatisch zehn Minuten nach Ankunft. + Bitte beachten: Es wird nicht überprüft, ob die angegebene Zielstation + in der vorgesehenen Route des Zugs vorkommt oder nicht. +

+

Falls du zum Checkinzeitpunkt bereits in einen anderen Zug eingecheckt bist, wirst du zunächst am gewählten Startbahnhof aus diesem ausgecheckt. Der Checkout erfolgt unabhängig davon, ob der vorherige Zug an dieser @@ -80,6 +84,12 @@ innerhalb von 48 Stunden kein Zielbahnhof nachgetragen wird, wird der Checkin automatisch rückgängig gemacht.

+

+ Das Verhalten des Checkout-Endpunkts hängt vom Zeitpunkt ab. Wenn der + Zug den angegebenen Zielbahnhof bereits erreicht hat, wird dort + ausgecheckt. Andernfalls wird das Reiseziel aktualisiert und etwa zehn + Minuten nach Ankunft automatisch ausgecheckt. +

curl -X POST -H "Content-Type: application/json" -d '{"token":"<%= $uid %>-<%= $token->{travel} // 'TOKEN' %>"}' <%= $api_root %>/travel

@@ -102,7 +112,7 @@ {
"token" : "<%= $uid %>-<%= $token->{travel} // 'TOKEN' %>",
"action" : "checkout",
- "force" : true/false, (wenn true: Checkout jetzt durchführen und auftretende Fehler ignorieren. Kann zu Logeinträgen ohne Ankunftsdaten führen.)
+ "force" : true/false, (wenn true: Checkout jetzt durchführen und auftretende Fehler ignorieren. Kann zu Logeinträgen ohne Ankunftszeit führen.)
"toStation" : "Berlin Hbf", (DS100 oder EVA-Nummer sind ebenfalls möglich)
"comment" : "Beliebiger Text" (optional, überschreibt vorherigen Kommentar)
} -- cgit v1.2.3