Skip to content
Result.pm 3.86 KiB
Newer Older
Birte Kristina Friesel's avatar
Birte Kristina Friesel committed
package Travel::Status::DE::VRR::Result;

use strict;
use warnings;
use 5.010;

use parent 'Class::Accessor';

Birte Kristina Friesel's avatar
Birte Kristina Friesel committed
our $VERSION = '1.03';
Birte Kristina Friesel's avatar
Birte Kristina Friesel committed

Travel::Status::DE::VRR::Result->mk_ro_accessors(
	qw(countdown date delay destination info key line lineref platform
	  platform_db sched_date sched_time time type)
Birte Kristina Friesel's avatar
Birte Kristina Friesel committed
);
Birte Kristina Friesel's avatar
Birte Kristina Friesel committed

sub new {
	my ( $obj, %conf ) = @_;

	my $ref = \%conf;

	return bless( $ref, $obj );
}

sub TO_JSON {
	my ($self) = @_;

	return { %{$self} };
}

Birte Kristina Friesel's avatar
Birte Kristina Friesel committed
1;

__END__

=head1 NAME

Travel::Status::DE::VRR::Result - Information about a single
departure received by Travel::Status::DE::VRR

=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
        );
    }

Birte Kristina Friesel's avatar
Birte Kristina Friesel committed
=head1 VERSION

Birte Kristina Friesel's avatar
Birte Kristina Friesel committed
version 1.03
Birte Kristina Friesel's avatar
Birte Kristina Friesel committed

=head1 DESCRIPTION

Travel::Status::DE::VRR::Result describes a single departure as obtained by
Travel::Status::DE::VRR.  It contains information about the time, platform,
line number and destination.

Birte Kristina Friesel's avatar
Birte Kristina Friesel committed
=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.

Birte Kristina Friesel's avatar
Birte Kristina Friesel committed
=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.

Note that this is only available for DB trains, in other cases it will always
return 0.

=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->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::VRR::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>.
=head2 INTERNAL

=over

=item $departure = Travel::Status::DE::VRR::Result->new(I<%data>)

Returns a new Travel::Status::DE::VRR::Result object.  You should not need to
call this.

=head1 DEPARTURE TYPES

The following are known so far:

=over

=item * Abellio-Zug

=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
Birte Kristina Friesel's avatar
Birte Kristina Friesel committed
=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.
Birte Kristina Friesel's avatar
Birte Kristina Friesel committed
=head1 SEE ALSO

Travel::Status::DE::VRR(3pm).

Birte Kristina Friesel's avatar
Birte Kristina Friesel committed
=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.