diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2019-03-19 17:02:30 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2019-03-19 17:02:30 +0100 | 
| commit | 9c326773655664e18d5b846ed4136fea9fafacf8 (patch) | |
| tree | 672ac27f0a6ca471e5fe0fe28d3fc801913180e7 | |
| parent | 56342f21d27295e98327be4b49e54205b7a02e13 (diff) | |
API: Status: group properties, add station UIC/lon/lat
| -rwxr-xr-x | index.pl | 49 | ||||
| -rw-r--r-- | templates/account.html.ep | 24 | 
2 files changed, 55 insertions, 18 deletions
| @@ -1070,17 +1070,40 @@ get '/api/v0/:action/:token' => sub {  	}  	if ( $api_action eq 'status' ) {  		my $status = $self->get_user_status($uid); + +		my @station_descriptions; +		my $station_eva = undef; +		my $station_lon = undef; +		my $station_lat = undef; + +		if ( $status->{station_ds100} ) { +			@station_descriptions +			  = Travel::Status::DE::IRIS::Stations::get_station( +				$status->{station_ds100} ); +		} +		if ( @station_descriptions == 1 ) { +			( undef, undef, $station_eva, $station_lon, $station_lat ) +			  = @{ $station_descriptions[0] }; +		}  		$self->render(  			json => { -				checked_in    => $status->{checked_in} ? \1 : \0, -				station_ds100 => $status->{station_ds100}, -				station_name  => $status->{station_name}, -				train_type    => $status->{train_type}, -				train_line    => $status->{train_line}, -				train_no      => $status->{train_no}, -				action_ts     => $status->{timestamp}->epoch, -				sched_ts      => $status->{sched_ts}->epoch, -				real_ts       => $status->{real_ts}->epoch, +				deprecated => \0, +				checked_in => $status->{checked_in} ? \1 : \0, +				station    => { +					ds100     => $status->{station_ds100}, +					name      => $status->{station_name}, +					uic       => $station_eva, +					longitude => $station_lon, +					latitude  => $station_lat, +				}, +				train => { +					type => $status->{train_type}, +					line => $status->{train_line}, +					no   => $status->{train_no}, +				}, +				action_ts => $status->{timestamp}->epoch, +				sched_ts  => $status->{sched_ts}->epoch, +				real_ts   => $status->{real_ts}->epoch,  			},  		);  	} @@ -1483,7 +1506,13 @@ post '/delete' => sub {  	my $now = DateTime->now( time_zone => 'Europe/Berlin' )->epoch;  	if ( $self->param('action') eq 'delete' ) { -		if (not $self->authenticate($self->current_user->{name}, $self->param('password'))) { +		if ( +			not $self->authenticate( +				$self->current_user->{name}, +				$self->param('password') +			) +		  ) +		{  			$self->render( 'account', invalid => 'password' );  			return;  		} diff --git a/templates/account.html.ep b/templates/account.html.ep index 17b5e48..f7cac36 100644 --- a/templates/account.html.ep +++ b/templates/account.html.ep @@ -148,9 +148,6 @@  <h3>Status</h3>  <div class="row">  	<div class="col s12"> -		<p> -			Das Format der API v0 kann sich noch ändern, ab v1 ist es stabil. -		</p>  		<p style="font-family: Monospace;">  			% if ($token->{status}) {  				curl <%= $api_root %>/status/<%= $acc->{id} %>-<%= $token->{status} // 'TOKEN' %> @@ -159,14 +156,25 @@  				curl <%= $api_root %>/status/TOKEN  			% }  		</p> +		<p> +		Beispiel / Layout: +		</p>  		<p style="font-family: Monospace;">  		{<br/> +			"deprecated" : true / false, (falls true: Diese API-Version wird irgendwann abgeschaltet, bitte auf eine neue umsteigen)<br/>  			"checked_in" : true / false,<br/> -			"station_ds100" : "EE", (DS100-Kürzel der letzten Station)<br/> -			"station_name" : "Essen Hbf", (Name der letzten Station)<br/> -			"train_type" : "ICE", (aktueller / letzter Zugtyp)<br/> -			"train_line" : "", (Linie, ggf. null)<br/> -			"train_no" : "1234", (Zugnummer)<br/> +			"station" : {<br/> +				"name" : "Essen Hbf", (Name der letzten Station)<br/> +				"ds100" : "EE", (DS100-Kürzel)<br/> +				"uic" : 8000098, (Internationale Bahnhofsnummer)<br/> +				"longitude" : 7.014793,<br/> +				"latitude" : 51.451355,<br/> +			},<br/> +			"train" : {<br/> +			"type" : "ICE", (aktueller / letzter Zugtyp)<br/> +			"line" : null, (Linie als String, nicht immer numerisch, ggf. null)<br/> +			"no" : "1234", (Zugnummer als String)<br/> +			},<br/>  			"action_ts" : 1234567, (UNIX-Timestamp des letzten Checkin/Checkout)<br/>  			"sched_ts" : 1234567, (UNIX-Timestamp der zugehörigen Ankunft/Abfahrt gemäß Fahrplan. Ggf. 0)<br/>  			"real_ts" : 1234567, (UNIX-Timestamp der zugehörigen Ankunft/Abfahrt laut Echtzeitdaten. Ggf. 0)<br/> | 
