From c280291a0b7150c902e9dae5f4f670148307bdf3 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 13 Jan 2017 19:00:33 +0100 Subject: initial support for stop messages (todo: documentation) (closes #6) --- lib/Travel/Status/DE/URA.pm | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'lib/Travel/Status/DE') diff --git a/lib/Travel/Status/DE/URA.pm b/lib/Travel/Status/DE/URA.pm index f290e53..be405c2 100644 --- a/lib/Travel/Status/DE/URA.pm +++ b/lib/Travel/Status/DE/URA.pm @@ -63,6 +63,9 @@ sub new { }, }; + if ( $opt{with_messages} ) { + $self->{post}{ReturnList} .= ',messagetext,messagetype'; + } if ( $opt{with_stops} ) { $self->{post}{StopAlso} = 'True'; } @@ -158,7 +161,20 @@ sub parse_raw_data { ); } } - if ( $type == TYPE_PREDICTION ) { + elsif ( $type == TYPE_MESSAGE ) { + push( + @{ $self->{messages} }, + { + stop_name => $fields[1], + stop_id => $fields[2], + + # 0 = long text. 2 = short text for station displays? + type => $fields[6], + text => $fields[7], + } + ); + } + elsif ( $type == TYPE_PREDICTION ) { push( @{ $self->{stop_names} }, $fields[1] ); } } @@ -193,6 +209,25 @@ sub errstr { return $self->{errstr}; } +sub messages_by_stop_id { + my ( $self, $stop_id ) = @_; + + my @messages = grep { $_->{stop_id} == $stop_id } @{ $self->{messages} }; + @messages = map { $_->{text} } @messages; + + return @messages; +} + +sub messages_by_stop_name { + my ( $self, $stop_name ) = @_; + + my @messages + = grep { $_->{stop_name} eq $stop_name } @{ $self->{messages} }; + @messages = map { $_->{text} } @messages; + + return @messages; +} + sub results { my ( $self, %opt ) = @_; my @results; -- cgit v1.2.3