Unverified Commit 7477ab8a authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Handle HAFAS backend in JSON API

Note: API output is not proper / stable yet

Ref: #17
parent ea80109a
Loading
Loading
Loading
Loading
+86 −57
Original line number Diff line number Diff line
@@ -1491,8 +1491,14 @@ sub handle_result {
		}

		if ( $template eq 'json' ) {
			my @json_route = $self->json_route_diff( [ $result->route ],
			my @json_route;
			if ( $result->can('sched_route') ) {
				@json_route = $self->json_route_diff( [ $result->route ],
					[ $result->sched_route ] );
			}
			else {
				@json_route = map { $_->TO_JSON } $result->route;
			}

			if ( $apiver eq '1' or $apiver eq '2' ) {

@@ -1508,6 +1514,7 @@ sub handle_result {
				return;
			}
			else {    # apiver == 3
				if ( $result->isa('Travel::Status::DE::IRIS::Result') ) {
					my ( $delay_arr, $delay_dep, $sched_arr, $sched_dep );
					if ( $result->arrival ) {
						$delay_arr = $result->arrival->subtract_datetime(
@@ -1521,7 +1528,8 @@ sub handle_result {
						$sched_arr = $result->sched_arrival->strftime('%H:%M');
					}
					if ( $result->sched_departure ) {
					$sched_dep = $result->sched_departure->strftime('%H:%M');
						$sched_dep
						  = $result->sched_departure->strftime('%H:%M');
					}
					push(
						@departures,
@@ -1566,6 +1574,27 @@ sub handle_result {
						}
					);
				}
				else {
					push(
						@departures,
						{
							delay             => $result->delay,
							direction         => $result->direction,
							destination       => $result->destination,
							isCancelled       => $result->is_cancelled,
							messages          => [ $result->messages ],
							platform          => $result->platform,
							route             => \@json_route,
							scheduledPlatform => $result->sched_platform,
							scheduledTime     => $result->sched_datetime->epoch,
							time              => $result->datetime->epoch,
							train             => $result->line,
							trainNumber       => $result->number,
							via => [ $result->route_interesting(3) ],
						}
					);
				}
			}
		}
		elsif ( $template eq 'text' ) {
			push(