From 0ebd8e6bb379dba71239050ee643ff78058a95e5 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 10 Sep 2015 10:23:50 +0200 Subject: add service list --- bin/hafas-m | 10 ++++++++++ lib/Travel/Status/DE/HAFAS.pm | 33 +++++++++++++++++++++++---------- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/bin/hafas-m b/bin/hafas-m index cc78d26..ee3ae78 100755 --- a/bin/hafas-m +++ b/bin/hafas-m @@ -17,6 +17,7 @@ my $ignore_late = 0; my $types = q{}; my $language; my $developer_mode; +my $list_services; my @output; @@ -32,9 +33,18 @@ GetOptions( 't|time=s' => \$time, 'V|version' => \&show_version, 'devmode' => \$developer_mode, + 'list' => \$list_services, ) or show_help(1); +if ($list_services) { + printf( "%-40s %-14s %s\n\n", 'operator', 'abbr. (-s)', 'url (-u)' ); + for my $service ( Travel::Status::DE::HAFAS::get_services() ) { + printf( "%-40s %-14s %s\n", @{$service}{qw(name shortname url)} ); + } + exit 0; +} + for my $type ( split( qr{,}, $types ) ) { if ( substr( $type, 0, 1 ) eq q{!} ) { $train_type{ substr( $type, 1 ) } = 0; diff --git a/lib/Travel/Status/DE/HAFAS.pm b/lib/Travel/Status/DE/HAFAS.pm index d091f52..fe8cf2e 100644 --- a/lib/Travel/Status/DE/HAFAS.pm +++ b/lib/Travel/Status/DE/HAFAS.pm @@ -14,6 +14,14 @@ use XML::LibXML; our $VERSION = '1.05'; +my %hafas_instance = ( + DB => { + url => 'http://reiseauskunft.bahn.de/bin/bhftafel.exe', + name => 'Deutsche Bahn', + productbits => [qw[ice ic_ec d nv s bus ferry u tram ondemand x x x x]], + } +); + sub new { my ( $obj, %conf ) = @_; @@ -46,21 +54,13 @@ sub new { boardType => $mode, L => 'vs_java3', }, - service => { - DB => { - url => 'http://reiseauskunft.bahn.de/bin/bhftafel.exe', - name => 'Deutsche Bahn', - productbits => - [qw[ice ic_ec d nv s bus ferry u tram ondemand x x x x]], - } - }, }; bless( $ref, $obj ); $ref->set_productfilter; - my $url = $ref->{service}{$service}{url} . '/' . $lang . 'n'; + my $url = $hafas_instance{$service}{url} . '/' . $lang . 'n'; $reply = $ua->post( $url, $ref->{post} ); @@ -101,7 +101,7 @@ sub set_productfilter { my $service = $self->{active_service}; $self->{post}{productsFilter} - = '1' x ( scalar @{ $self->{service}{$service}{productbits} } ); + = '1' x ( scalar @{ $hafas_instance{$service}{productbits} } ); } sub check_input_error { @@ -195,6 +195,19 @@ sub results { # static sub get_services { + my @services; + for my $service ( sort keys %hafas_instance ) { + my %desc = %{ $hafas_instance{$service} }; + $desc{shortname} = $service; + push( @services, \%desc ); + } + return @services; +} + +sub get_service { + my ($self) = @_; + + return %{ $hafas_instance{ $self->active_service } }; } 1; -- cgit v1.2.3