summaryrefslogtreecommitdiff
path: root/lib/Travelynx/Helper/Traewelling.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Travelynx/Helper/Traewelling.pm')
-rw-r--r--lib/Travelynx/Helper/Traewelling.pm23
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/Travelynx/Helper/Traewelling.pm b/lib/Travelynx/Helper/Traewelling.pm
index 345d642..607b799 100644
--- a/lib/Travelynx/Helper/Traewelling.pm
+++ b/lib/Travelynx/Helper/Traewelling.pm
@@ -83,7 +83,7 @@ sub get_status_p {
if ( my $err = $tx->error ) {
my $err_msg
= "v1/user/${username}/statuses: HTTP $err->{code} $err->{message}";
- $promise->reject($err_msg);
+ $promise->reject( { http => $err->{code}, text => $err_msg } );
return;
}
else {
@@ -118,6 +118,7 @@ sub get_status_p {
my ( $train_type, $train_line ) = split( qr{ }, $linename );
$promise->resolve(
{
+ http => $tx->res->code,
status_id => $status_id,
message => $message,
checkin => $checkin_at,
@@ -138,7 +139,8 @@ sub get_status_p {
return;
}
else {
- $promise->reject("v1/${username}/statuses: unknown error");
+ $promise->reject(
+ { text => "v1/${username}/statuses: unknown error" } );
return;
}
}
@@ -146,7 +148,7 @@ sub get_status_p {
)->catch(
sub {
my ($err) = @_;
- $promise->reject("v1/${username}/statuses: $err");
+ $promise->reject( { text => "v1/${username}/statuses: $err" } );
return;
}
)->wait;
@@ -320,7 +322,7 @@ sub logout_p {
return $promise;
}
-sub checkin {
+sub checkin_p {
my ( $self, %opt ) = @_;
my $header = {
@@ -356,10 +358,11 @@ sub checkin {
$request->{body} = $opt{user_data}{comment};
}
-# https://github.com/Traewelling/traewelling/blob/develop/app/Http/Controllers/API/v1/TransportController.php -> create. trains/checkin ist richtig.
my $debug_prefix
= "v1/trains/checkin('$request->{lineName}' $request->{tripId} $request->{start} -> $request->{destination})";
+ my $promise = Mojo::Promise->new;
+
$self->{user_agent}->request_timeout(20)
->post_p(
"https://traewelling.de/api/v1/trains/checkin" => $header => json =>
@@ -389,13 +392,11 @@ sub checkin {
"Konnte $opt{train_type} $opt{train_no} nicht übertragen: $debug_prefix returned $err_msg",
is_error => 1
);
+ $promise->reject( { http => $err->{code} } );
return;
}
$self->{log}->debug( "... success! " . $tx->res->body );
- # As of 2020-10-04, traewelling.de checkins do not yet return
- # "statusId". The patch is present on the develop branch and waiting
- # for a merge into master.
$self->{model}->log(
uid => $opt{uid},
message => "Eingecheckt in $opt{train_type} $opt{train_no}",
@@ -405,9 +406,11 @@ sub checkin {
uid => $opt{uid},
ts => $opt{checkin_ts}
);
+ $promise->resolve( { http => $tx->res->code } );
# TODO store status_id in in_transit object so that it can be shown
# on the user status page
+ return;
}
)->catch(
sub {
@@ -419,8 +422,12 @@ sub checkin {
"Konnte $opt{train_type} $opt{train_no} nicht übertragen: $debug_prefix returned $err",
is_error => 1
);
+ $promise->reject( { connection => $err } );
+ return;
}
)->wait;
+
+ return $promise;
}
1;