diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2023-08-19 10:06:15 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2023-08-19 10:06:15 +0200 |
commit | 85022709d75940a3f84cdbe462f9b261b38fc69e (patch) | |
tree | 9ffaba60336977c75ef5a63d9ddd07132f76c58b /lib | |
parent | 8745513fe90f65e456f74aa66bbbbcb53078b79b (diff) |
API: fix checkin with toStation and checkout endpoints
Broken by 38ad42b42cbf6da6254a2498a2fc553507cb3f18
Diffstat (limited to 'lib')
-rwxr-xr-x | lib/Travelynx/Controller/Api.pm | 63 |
1 files changed, 39 insertions, 24 deletions
diff --git a/lib/Travelynx/Controller/Api.pm b/lib/Travelynx/Controller/Api.pm index d0ebc1b..8ff98de 100755 --- a/lib/Travelynx/Controller/Api.pm +++ b/lib/Travelynx/Controller/Api.pm @@ -280,15 +280,20 @@ sub travel_v1 { # the user may not have provided the correct to_station, so # request related stations for checkout. - my ( $train2, $error ) = $self->checkout( + return $self->checkout_p( station => $to_station, force => 0, uid => $uid, with_related => 1, ); - if ($error) { - return Mojo::Promise->reject($error); - } + } + return Mojo::Promise->resolve; + } + )->then( + sub { + my ( undef, $error ) = @_; + if ($error) { + return Mojo::Promise->reject($error); } $self->render( json => { @@ -334,33 +339,43 @@ sub travel_v1 { ); } + $self->render_later; + # the user may not have provided the correct to_station, so # request related stations for checkout. - my ( $train, $error ) = $self->checkout( + $self->checkout_p( station => $to_station, force => $payload->{force} ? 1 : 0, uid => $uid, with_related => 1, - ); - if ($error) { - $self->render( - json => { - success => \0, - deprecated => \0, - error => 'Checkout error: ' . $error, - status => $self->get_user_status_json_v1( uid => $uid ) - } - ); - } - else { - $self->render( - json => { - success => \1, - deprecated => \0, - status => $self->get_user_status_json_v1( uid => $uid ) + )->then( + sub { + my ( $train, $error ) = @_; + if ($error) { + return Mojo::Promise->reject($error); } - ); - } + $self->render( + json => { + success => \1, + deprecated => \0, + status => $self->get_user_status_json_v1( uid => $uid ) + } + ); + return; + } + )->catch( + sub { + my ($err) = @_; + $self->render( + json => { + success => \0, + deprecated => \0, + error => 'Checkout error: ' . $err, + status => $self->get_user_status_json_v1( uid => $uid ) + } + ); + } + )->wait; } elsif ( $payload->{action} eq 'undo' ) { my $error = $self->undo( 'in_transit', $uid ); |