diff options
| -rwxr-xr-x | lib/Travelynx/Controller/Api.pm | 69 | ||||
| -rw-r--r-- | templates/api_documentation.html.ep | 28 | 
2 files changed, 59 insertions, 38 deletions
| diff --git a/lib/Travelynx/Controller/Api.pm b/lib/Travelynx/Controller/Api.pm index f5ea3e4..f0fa5db 100755 --- a/lib/Travelynx/Controller/Api.pm +++ b/lib/Travelynx/Controller/Api.pm @@ -174,8 +174,9 @@ sub travel_v1 {  	if ( not $payload or ref($payload) ne 'HASH' ) {  		$self->render(  			json => { -				success => \0, -				error   => 'Malformed JSON', +				success    => \0, +				deprecated => \0, +				error      => 'Malformed JSON',  			},  		);  		return; @@ -184,7 +185,8 @@ sub travel_v1 {  	if ( $self->app->mode ne 'development' ) {  		$self->render(  			json => { -				success => \0, +				success    => \0, +				deprecated => \0,  				error =>  'This feature is incomplete and only available in development mode',  			}, @@ -197,8 +199,9 @@ sub travel_v1 {  	if ( $api_token !~ qr{ ^ (?<id> \d+ ) - (?<token> .* ) $ }x ) {  		$self->render(  			json => { -				success => \0, -				error   => 'Malformed token', +				success    => \0, +				deprecated => \0, +				error      => 'Malformed token',  			},  		);  		return; @@ -209,8 +212,9 @@ sub travel_v1 {  	if ( $uid > 2147483647 ) {  		$self->render(  			json => { -				success => \0, -				error   => 'Malformed token', +				success    => \0, +				deprecated => \0, +				error      => 'Malformed token',  			},  		);  		return; @@ -220,8 +224,9 @@ sub travel_v1 {  	if ( $api_token ne $token->{'travel'} ) {  		$self->render(  			json => { -				success => \0, -				error   => 'Invalid token', +				success    => \0, +				deprecated => \0, +				error      => 'Invalid token',  			},  		);  		return; @@ -232,8 +237,9 @@ sub travel_v1 {  	{  		$self->render(  			json => { -				success => \0, -				error   => 'Missing or invalid action', +				success    => \0, +				deprecated => \0, +				error      => 'Missing or invalid action',  			},  		);  		return; @@ -269,8 +275,9 @@ sub travel_v1 {  			if ( not defined $train ) {  				$self->render(  					json => { -						success => \0, -						error   => 'Fehler am Abfahrtsbahnhof: ' +						success    => \0, +						deprecated => \0, +						error      => 'Fehler am Abfahrtsbahnhof: '  						  . $status->{errstr},  						status => $self->get_user_status_json_v1($uid)  					} @@ -292,17 +299,19 @@ sub travel_v1 {  		if ($error) {  			$self->render(  				json => { -					success => \0, -					error   => $error, -					status  => $self->get_user_status_json_v1($uid) +					success    => \0, +					deprecated => \0, +					error      => $error, +					status     => $self->get_user_status_json_v1($uid)  				}  			);  		}  		else {  			$self->render(  				json => { -					success => \1, -					status  => $self->get_user_status_json_v1($uid) +					success    => \1, +					deprecated => \0, +					status     => $self->get_user_status_json_v1($uid)  				}  			);  		} @@ -320,17 +329,19 @@ sub travel_v1 {  		if ($error) {  			$self->render(  				json => { -					success => \0, -					error   => $error, -					status  => $self->get_user_status_json_v1($uid) +					success    => \0, +					deprecated => \0, +					error      => $error, +					status     => $self->get_user_status_json_v1($uid)  				}  			);  		}  		else {  			$self->render(  				json => { -					success => \1, -					status  => $self->get_user_status_json_v1($uid) +					success    => \1, +					deprecated => \0, +					status     => $self->get_user_status_json_v1($uid)  				}  			);  		} @@ -340,17 +351,19 @@ sub travel_v1 {  		if ($error) {  			$self->render(  				json => { -					success => \0, -					error   => $error, -					status  => $self->get_user_status_json_v1($uid) +					success    => \0, +					deprecated => \0, +					error      => $error, +					status     => $self->get_user_status_json_v1($uid)  				}  			);  		}  		else {  			$self->render(  				json => { -					success => \1, -					status  => $self->get_user_status_json_v1($uid) +					success    => \1, +					deprecated => \0, +					status     => $self->get_user_status_json_v1($uid)  				}  			);  		} diff --git a/templates/api_documentation.html.ep b/templates/api_documentation.html.ep index 2e3e66d..53159a1 100644 --- a/templates/api_documentation.html.ep +++ b/templates/api_documentation.html.ep @@ -73,6 +73,12 @@  		<p>  			Checkin per API. Sobald eine Zielstation bekannt ist, erfolgt der  			Checkout wie beim Webinterface automatisch zehn Minuten nach Ankunft. +			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 +			Station verkehrt oder nicht. Falls nach einem Checkin ohne Zielwahl +			innerhalb von 48 Stunden kein Zielbahnhof nachgetragen wird, wird der +			CHeckin automatisch rückgängig gemacht.  		</p>  		<p style="font-family: Monospace;">  			curl -X POST -H "Content-Type: application/json" -d '{"token":"<%= $uid %>-<%= $token->{travel} // 'TOKEN' %>"}' <%= $api_root %>/travel @@ -88,7 +94,7 @@  			}<br/>  			"fromStation" : "Essen Hbf", (DS100 oder EVA-Nummer sind ebenfalls möglich)<br/>  			"toStation" : "Berlin Hbf", (optional, DS100 oder EVA-Nummer sind ebenfalls möglich)<br/> -			"comment" : "Beliebiger Text" (optional)<br/> +			"comment" : "Beliebiger Text" (optional, überschreibt vorherigen Kommentar)<br/>  		}  		</p>  		<p>Payload zur Wahl eines neuen Ziels, wenn bereits eingecheckt:</p> @@ -96,9 +102,9 @@  		{<br/>  			"token" : "<%= $uid %>-<%= $token->{travel} // 'TOKEN' %>",<br/>  			"action" : "checkout",<br/> -			"force" : True/False, (wenn True: Checkout jetzt durchführen und auftretende Fehler ignorieren. Kann zu Logeinträgen ohne Ankunftsdaten führen.)<br/> +			"force" : true/false, (wenn true: Checkout jetzt durchführen und auftretende Fehler ignorieren. Kann zu Logeinträgen ohne Ankunftsdaten führen.)<br/>  			"toStation" : "Berlin Hbf", (DS100 oder EVA-Nummer sind ebenfalls möglich)<br/> -			"comment" : "Beliebiger Text" (optional)<br/> +			"comment" : "Beliebiger Text" (optional, überschreibt vorherigen Kommentar)<br/>  		}  		</p>  		<p>Payload zum Rückgängigmachen eines Checkins (nur während der Fahrt möglich):</p> @@ -113,7 +119,8 @@  		</p>  		<p style="font-family: Monospace;">  		{<br/> -			"success" : True,<br/> +			"success" : true,<br/> +			"deprecated" : true / false, (falls true: Diese API-Version wird irgendwann abgeschaltet, bitte auf eine neue umsteigen)<br/>  			"status" : { aktueller Nutzerstatus gemäß Status-API }<br/>  		}  		</p> @@ -122,7 +129,8 @@  		</p>  		<p style="font-family: Monospace;">  		{<br/> -			"success" : False,<br/> +			"success" : false,<br/> +			"deprecated" : true / false, (falls true: Diese API-Version wird irgendwann abgeschaltet, bitte auf eine neue umsteigen)<br/>  			"error" : "Begründung",<br/>  			"status" : { aktueller Nutzerstatus gemäß Status-API }<br/>  		} @@ -143,9 +151,9 @@  		<p style="font-family: Monospace;">  		{<br/>  			"token" : "<%= $uid %>-<%= $token->{import} // 'TOKEN' %>",<br/> -			"dryRun" : True/False, (optional: wenn True, wird die Eingabe validiert, aber keine Zugfahrt angelegt)<br/> -			"lax" : True/Fals, (optional: wenn True, werden unbekannte Unterwegshalte akzeptiert)<br/> -			"cancelled" : True/False, (Zugausfall?)<br/> +			"dryRun" : true/false, (optional: wenn true, wird die Eingabe validiert, aber keine Zugfahrt angelegt)<br/> +			"lax" : true/Fals, (optional: wenn true, werden unbekannte Unterwegshalte akzeptiert)<br/> +			"cancelled" : true/false, (Zugausfall?)<br/>  			"train" : {<br/>  			"type" : "S", (Zugtyp, z.B. ICE, RE, S)<br/>  			"line" : "6", (Linie als String, bei Zügen ohne Linie wie IC/ICE u.ä. null)<br/> @@ -174,7 +182,7 @@  		</p>  		<p style="font-family: Monospace;">  		{<br/> -			"success" : True,<br/> +			"success" : true,<br/>  			"id" : 1234, (ID der eingetragenen Zugfahrt)<br/>  			"result" : { ... } (Eingetragene Daten, Datenformat nicht näher spezifiziert und beliebig variabel)<br/>  		} @@ -184,7 +192,7 @@  		</p>  		<p style="font-family: Monospace;">  		{<br/> -			"success" : False,<br/> +			"success" : false,<br/>  			"error" : "Begründung"<br/>  		}  		</p> | 
