From ae21896982b5f53c0a011740f58a97be40bf0b30 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Tue, 17 Dec 2019 20:01:39 +0100 Subject: API: Add lax option --- lib/Travelynx.pm | 9 +++++++-- lib/Travelynx/Controller/Api.pm | 3 ++- templates/api_documentation.html.ep | 11 ++++++----- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 81dae20..5c54322 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -958,7 +958,7 @@ sub startup { $self->helper( 'journey_sanity_check' => sub { - my ( $self, $journey ) = @_; + my ( $self, $journey, $lax ) = @_; if ( $journey->{sched_duration} and $journey->{sched_duration} < 0 ) { @@ -983,7 +983,12 @@ sub startup { { return 'Zugfahrten mit über 500 km/h? Schön wär\'s.'; } - if ( $journey->{edited} & 0x0010 ) { + if ( $journey->{route} and @{ $journey->{route} } > 99 ) { + my $stop_count = @{ $journey->{route} }; + return +"Die Zugfahrt hat $stop_count Unterwegshalte. Also ich weiß ja nicht so recht."; + } + if ( $journey->{edited} & 0x0010 and not $lax ) { my @unknown_stations = $self->grep_unknown_stations( map { $_->[0] } @{ $journey->{route} } ); diff --git a/lib/Travelynx/Controller/Api.pm b/lib/Travelynx/Controller/Api.pm index 2e1fa49..54908fc 100755 --- a/lib/Travelynx/Controller/Api.pm +++ b/lib/Travelynx/Controller/Api.pm @@ -452,7 +452,8 @@ sub import_v1 { journey_id => $journey_id, verbose => 1 ); - $error = $self->journey_sanity_check($journey); + $error + = $self->journey_sanity_check( $journey, $payload->{lax} ? 1 : 0 ); } if ($error) { diff --git a/templates/api_documentation.html.ep b/templates/api_documentation.html.ep index b9b7b44..cf3a57a 100644 --- a/templates/api_documentation.html.ep +++ b/templates/api_documentation.html.ep @@ -78,7 +78,7 @@

Payload zum Einchecken, optional mit Zielwahl:

{
- "token" : "<%= $uid %>-<%= $token->{import} // 'TOKEN' %>",
+ "token" : "<%= $uid %>-<%= $token->{travel} // 'TOKEN' %>",
"action" : "checkin",
"train" : {
"type" : "ICE",
@@ -92,7 +92,7 @@

Payload zur Wahl eines neuen Ziels, wenn bereits eingecheckt:

{
- "token" : "<%= $uid %>-<%= $token->{import} // 'TOKEN' %>",
+ "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.)
"toStation" : "Berlin Hbf", (DS100 oder EVA-Nummer sind ebenfalls möglich)
@@ -102,7 +102,7 @@

Payload zum Rückgängigmachen eines Checkins (nur während der Fahrt möglich):

{
- "token" : "<%= $uid %>-<%= $token->{import} // 'TOKEN' %>",
+ "token" : "<%= $uid %>-<%= $token->{travel} // 'TOKEN' %>",
"action" : "undo"
}

@@ -135,13 +135,14 @@ Manueller Import vergangener Zugfahrten (eine Fahrt pro API-Aufruf).

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

Payload (alle nicht als optional markierten Felder sind Pflicht):

{
"token" : "<%= $uid %>-<%= $token->{import} // 'TOKEN' %>",
"dryRun" : True/False, (optional: wenn True, wird die Eingabe validiert, aber keine Zugfahrt angelegt)
+ "lax" : True/Fals, (optional: wenn True, werden unbekannte Unterwegshalte akzeptiert)
"cancelled" : True/False, (Zugausfall?)
"train" : {
"type" : "S", (Zugtyp, z.B. ICE, RE, S)
@@ -173,7 +174,7 @@ {
"success" : True,
"id" : 1234, (ID der eingetragenen Zugfahrt)
- "result" : { ... } (Eingetragene Daten, Inhalt ist variabel)
+ "result" : { ... } (Eingetragene Daten, Datenformat nicht näher spezifiziert und beliebig variabel)
}

-- cgit v1.2.3