diff options
Diffstat (limited to 'lib/Travel/Status/DE/EFA')
-rw-r--r-- | lib/Travel/Status/DE/EFA/Line.pm | 137 | ||||
-rw-r--r-- | lib/Travel/Status/DE/EFA/Result.pm | 225 |
2 files changed, 362 insertions, 0 deletions
diff --git a/lib/Travel/Status/DE/EFA/Line.pm b/lib/Travel/Status/DE/EFA/Line.pm new file mode 100644 index 0000000..8a22fe8 --- /dev/null +++ b/lib/Travel/Status/DE/EFA/Line.pm @@ -0,0 +1,137 @@ +package Travel::Status::DE::EFA::Line; + +use strict; +use warnings; +use 5.010; + +use parent 'Class::Accessor'; + +our $VERSION = '1.05'; + +Travel::Status::DE::EFA::Line->mk_ro_accessors( + qw(direction name operator route type valid)); + +sub new { + my ( $obj, %conf ) = @_; + + my $ref = \%conf; + + return bless( $ref, $obj ); +} + +sub TO_JSON { + my ($self) = @_; + + return { %{$self} }; +} + +1; + +__END__ + +=head1 NAME + +Travel::Status::DE::EFA::Line - Information about a line departing at the +requested station + +=head1 SYNOPSIS + + for my $line ($status->lines) { + printf( + "line %s -> %s\nRoute: %s\nType %s, operator %s\nValid: %s\n\n", + $line->name, $line->direction, $line->route, + $line->type, $line->operator, $line->valid + ); + } + +=head1 VERSION + +version 1.05 + +=head1 DESCRIPTION + +Travel::Status::DE::EFA::Line describes a tram/bus/train line departing at the +stop requested by Travel::Status::DE::EFA. Note that it only covers one +direction, so in most cases, you get two Travel::Status::DE::EFA::Line objects +per actual line. + +=head1 METHODS + +=head2 ACCESSORS + +=over + +=item $line->direction + +Direction of the line. Name of either the destination stop or one on the way. + +=item $line->name + +Name of the line, e.g. "U11", "SB15", "107". + +=item $line->operator + +Operator of the line, as in the local transit company responsible for it. +May be undefined. + +=item $line->route + +Partial route of the line (as string), usually start and destination with two +stops in between. May be undefined. + +Note that start means the actual start of the line, the stop requested by +Travel::Status::DE::EFA::Line may not even be included in this listing. + +=item $line->type + +Type of the line. Observed values so far are "Bus", "NE", "StraE<szlig>enbahn", +"U-Bahn". + +=item $line->valid + +When / how long above information is valid. + +=back + +=head2 INTERNAL + +=over + +=item $line = Travel::Status::DE::EFA::Line->new(I<%data>) + +Returns a new Travel::Status::DE::EFA::Line object. You should not need to +call this. + +=item $line->TO_JSON + +Allows the object data to be serialized to JSON. + +=back + +=head1 DIAGNOSTICS + +None. + +=head1 DEPENDENCIES + +=over + +=item Class::Accessor(3pm) + +=back + +=head1 BUGS AND LIMITATIONS + +The B<route> accessor returns a simple string, an array might be better suited. + +=head1 SEE ALSO + +Travel::Status::DE::EFA(3pm). + +=head1 AUTHOR + +Copyright (C) 2011 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt> + +=head1 LICENSE + +This module is licensed under the same terms as Perl itself. diff --git a/lib/Travel/Status/DE/EFA/Result.pm b/lib/Travel/Status/DE/EFA/Result.pm new file mode 100644 index 0000000..c623f6e --- /dev/null +++ b/lib/Travel/Status/DE/EFA/Result.pm @@ -0,0 +1,225 @@ +package Travel::Status::DE::EFA::Result; + +use strict; +use warnings; +use 5.010; + +use parent 'Class::Accessor'; + +our $VERSION = '1.05'; + +Travel::Status::DE::EFA::Result->mk_ro_accessors( + qw(countdown date delay destination is_cancelled info key line lineref platform + platform_db sched_date sched_time time type) +); + +sub new { + my ( $obj, %conf ) = @_; + + my $ref = \%conf; + + if ($ref->{delay} eq '-9999') { + $ref->{delay} = 0; + $ref->{is_cancelled} = 1; + } + else { + $ref->{is_cancelled} = 0; + } + + return bless( $ref, $obj ); +} + +sub TO_JSON { + my ($self) = @_; + + return { %{$self} }; +} + +1; + +__END__ + +=head1 NAME + +Travel::Status::DE::EFA::Result - Information about a single +departure received by Travel::Status::DE::EFA + +=head1 SYNOPSIS + + for my $departure ($status->results) { + printf( + "At %s: %s to %s from platform %s\n", + $departure->time, $departure->line, $departure->destination, + $departure->platform + ); + } + +=head1 VERSION + +version 1.05 + +=head1 DESCRIPTION + +Travel::Status::DE::EFA::Result describes a single departure as obtained by +Travel::Status::DE::EFA. It contains information about the time, platform, +line number and destination. + +=head1 METHODS + +=head2 ACCESSORS + +"Actual" in the description means that the delay (if available) is already +included in the calculation, "Scheduled" means it isn't. + +=over + +=item $departure->countdown + +Actual time in minutes from now until the tram/bus/train will depart. + +If delay information is available, it is already included. + +=item $departure->date + +Actual departure date (DD.MM.YYYY). + +=item $departure->delay + +Expected delay from scheduled departure time in minutes. A delay of 0 +indicates either departure on time or that no delay information is available. + +=item $departure->destination + +Destination name. + +=item $departure->info + +Additional information related to the departure (string). If departures for +an address were requested, this is the stop name, otherwise it may be recent +news related to the line's schedule. If no information is available, returns +an empty string. + +=item $departure->is_cancelled + +1 if the departure got cancelled, 0 otherwise. + +=item $departure->key + +Unknown. Unlike the name may suggest, this is not a unique key / UUID for a +departure: On the same day, different lines departing at the same station +may have the same key. It might, however, be unique when combined with the +B<line> information. + +=item $departure->line + +The name/number of the line. + +=item $departure->lineref + +Travel::Status::DE::EFA::Line(3pm) object describing the departing line in +detail. + +=item $departure->platform + +Departure platform number. + +=item $departure->platform_db + +true if the platform number is operated by DB ("Gleis x"), false ("Bstg. x") +otherwise. + +Unfortunately, there is no distinction between tram and bus platforms yet, +which also may have the same numbers. + +=item $departure->sched_date + +Scheduled departure date (DD.MM.YYYY). + +=item $departure->sched_time + +Scheduled departure time (HH:MM). + +=item $departure->time + +Actual departure time (HH:MM). + +=item $departure->type + +Type of the departure. Note that efa.vrr.de sometimes puts bogus data in this +field. See L</DEPARTURE TYPES>. + +=back + +=head2 INTERNAL + +=over + +=item $departure = Travel::Status::DE::EFA::Result->new(I<%data>) + +Returns a new Travel::Status::DE::EFA::Result object. You should not need to +call this. + +=item $departure->TO_JSON + +Allows the object data to be serialized to JSON. + +=back + +=head1 DEPARTURE TYPES + +The following are known so far: + +=over + +=item * Abellio-Zug + +=item * Bus + +=item * Eurocity + +=item * Intercity-Express + +=item * NE (NachtExpress / night bus) + +=item * Niederflurbus + +=item * R-Bahn (RE / RegionalExpress) + +=item * S-Bahn + +=item * SB (Schnellbus) + +=item * StraE<szlig>enbahn + +=item * U-Bahn + +=back + +=head1 DIAGNOSTICS + +None. + +=head1 DEPENDENCIES + +=over + +=item Class::Accessor(3pm) + +=back + +=head1 BUGS AND LIMITATIONS + +C<< $result->type >> may contain bogus data. This comes from the efa.vrr.de +interface. + +=head1 SEE ALSO + +Travel::Status::DE::EFA(3pm). + +=head1 AUTHOR + +Copyright (C) 2011 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt> + +=head1 LICENSE + +This module is licensed under the same terms as Perl itself. |