summaryrefslogtreecommitdiff
path: root/lib/Travelynx/Command/traewelling.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Travelynx/Command/traewelling.pm')
-rw-r--r--lib/Travelynx/Command/traewelling.pm66
1 files changed, 60 insertions, 6 deletions
diff --git a/lib/Travelynx/Command/traewelling.pm b/lib/Travelynx/Command/traewelling.pm
index d8eeaef..a586028 100644
--- a/lib/Travelynx/Command/traewelling.pm
+++ b/lib/Travelynx/Command/traewelling.pm
@@ -16,6 +16,7 @@ has usage => sub { shift->extract_usage };
sub pull_sync {
my ($self) = @_;
+ my %pull_result;
my $request_count = 0;
for my $account_data ( $self->app->traewelling->get_pull_accounts ) {
@@ -48,6 +49,7 @@ sub pull_sync {
)->then(
sub {
my ($traewelling) = @_;
+ $pull_result{ $traewelling->{http} } += 1;
$self->app->traewelling_to_travelynx(
traewelling => $traewelling,
user_data => $account_data
@@ -56,19 +58,23 @@ sub pull_sync {
)->catch(
sub {
my ($err) = @_;
+ $pull_result{ $err->{http} // 0 } += 1;
$self->app->traewelling->log(
uid => $account_data->{user_id},
- message => "Fehler bei der Status-Abfrage: $err",
+ message => "Fehler bei der Status-Abfrage: $err->{text}",
is_error => 1
);
- $self->app->log->debug("Error $err");
+ $self->app->log->debug("Error $err->{text}");
}
)->wait;
}
+
+ return \%pull_result;
}
sub push_sync {
my ($self) = @_;
+ my %push_result;
for my $candidate ( $self->app->traewelling->get_pushable_accounts ) {
$self->app->log->debug(
@@ -90,9 +96,21 @@ sub push_sync {
$self->app->log->debug("... already handled");
next;
}
- $self->app->traewelling_api->checkin( %{$candidate},
- trip_id => $trip_id );
+ $self->app->traewelling_api->checkin_p( %{$candidate},
+ trip_id => $trip_id )->then(
+ sub {
+ my ($status) = @_;
+ $push_result{ $status->{http} } += 1;
+ }
+ )->catch(
+ sub {
+ my ($status) = @_;
+ $push_result{ $status->{http} // 0 } += 1;
+ }
+ )->wait;
}
+
+ return \%push_result;
}
sub run {
@@ -100,15 +118,17 @@ sub run {
my $now = DateTime->now( time_zone => 'Europe/Berlin' );
my $started_at = $now;
+ my $push_result;
+ my $pull_result;
if ( not $direction or $direction eq 'push' ) {
- $self->push_sync;
+ $push_result = $self->push_sync;
}
my $trwl_push_finished_at = DateTime->now( time_zone => 'Europe/Berlin' );
if ( not $direction or $direction eq 'pull' ) {
- $self->pull_sync;
+ $pull_result = $self->pull_sync;
}
my $trwl_pull_finished_at = DateTime->now( time_zone => 'Europe/Berlin' );
@@ -135,6 +155,40 @@ sub run {
$self->app->ua->post_p( $self->app->config->{influxdb}->{url},
"traewelling ${report}" )->wait;
}
+
+ if ($push_result) {
+ for my $status ( keys %{$push_result} ) {
+ my $count = $push_result->{$status};
+ if ( $self->app->mode eq 'development' ) {
+ $self->app->log->debug( 'POST '
+ . $self->app->config->{influxdb}->{url}
+ . " traewelling_push,http=$status count=$count" );
+ }
+ else {
+ $self->app->ua->post_p(
+ $self->app->config->{influxdb}->{url},
+ "traewelling_push,http=$status count=$count"
+ )->wait;
+ }
+ }
+ }
+
+ if ($pull_result) {
+ for my $status ( keys %{$pull_result} ) {
+ my $count = $pull_result->{$status};
+ if ( $self->app->mode eq 'development' ) {
+ $self->app->log->debug( 'POST '
+ . $self->app->config->{influxdb}->{url}
+ . " traewelling_pull,http=$status count=$count" );
+ }
+ else {
+ $self->app->ua->post_p(
+ $self->app->config->{influxdb}->{url},
+ "traewelling_pull,http=$status count=$count"
+ )->wait;
+ }
+ }
+ }
}
}