diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2025-10-15 18:27:03 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2025-10-15 18:27:03 +0200 |
commit | 1608acbfe0ead257ba8cad2de12a432ce7dfa737 (patch) | |
tree | 000ab6b9003c5ab2bfa54ab8095475e92c8c7e68 | |
parent | ebcdfc7f21bf27adce358f346d6656aba421f276 (diff) |
EFA: check for (and report) backend errors
-rw-r--r-- | lib/Travel/Status/DE/EFA.pm | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/Travel/Status/DE/EFA.pm b/lib/Travel/Status/DE/EFA.pm index 2704c3e..7dfbc3b 100644 --- a/lib/Travel/Status/DE/EFA.pm +++ b/lib/Travel/Status/DE/EFA.pm @@ -43,7 +43,8 @@ sub new_p { say $self->{json}->pretty->encode( $self->{response} ); } - $self->check_for_ambiguous(); + $self->check_for_ambiguous; + $self->check_for_error; if ( $self->{errstr} ) { $promise->reject( $self->{errstr}, $self ); @@ -297,7 +298,8 @@ sub new { say $self->{json}->pretty->encode( $self->{response} ); } - $self->check_for_ambiguous(); + $self->check_for_ambiguous; + $self->check_for_error; return $self; } @@ -418,6 +420,23 @@ sub place_candidates { return; } +sub check_for_error { + my ($self) = @_; + + my $json = $self->{response}; + + my %kv; + for my $m ( @{ $json->{dm}{message} // [] } ) { + $kv{ $m->{name} } = $m->{value}; + } + + if ( $kv{error} ) { + $self->{errstr} = "Backend error: $kv{error}"; + } + + return; +} + sub check_for_ambiguous { my ($self) = @_; |