Scroll to navigation

Travel::Routing::DE::EFA(3pm) User Contributed Perl Documentation Travel::Routing::DE::EFA(3pm)

NAME

Travel::Routing::DE::EFA - unofficial interface to EFA-based itinerary services

SYNOPSIS

        use Travel::Routing::DE::EFA;
        my $efa = Travel::Routing::DE::EFA->new(
                efa_url     => 'http://efa.vrr.de/vrr/XSLT_TRIP_REQUEST2',
                origin      => [ 'Essen',    'HBf' ],
                destination => [ 'Duisburg', 'HBf' ],
        );
        for my $route ( $efa->routes ) {
                for my $part ( $route->parts ) {
                        printf(
                                "%s at %s -> %s at %s, via %s to %s\n",
                                $part->departure_time, $part->departure_stop,
                                $part->arrival_time,   $part->arrival_stop,
                                $part->train_line,     $part->train_destination,
                        );
                }
                print "\n";
        }

VERSION

version 2.19

DESCRIPTION

Travel::Routing::DE::EFA is a client for EFA-based itinerary services. You pass it the start/stop of your journey, maybe a time and a date and more details, and it returns the up-to-date scheduled connections between those two stops.

It uses LWP::UserAgent and XML::LibXML for this.

METHODS

$efa = Travel::Routing::DE::EFA->new(%opts)
Returns a new Travel::Routing::DE::EFA object and sets up its POST data via %opts.

Valid hash keys and their values are:

Mandatory. Sets the entry point to the EFA itinerary service. The following URLs (grouped by country) are known. A service marked with [!] is not completely supported yet and may not work at all.
Austria
Germany

If you found a URL not listed here, please send it to <derf@finalrewind.org>.

Mandatory. Sets the start of the journey. type is optional and may be one of stop (default), address (street and house number) or poi ("point of interest").
Mandatory. Sets the end of the journey, see origin.
Optional. Specifies an intermediate stop which the resulting itinerary must contain. See origin for arguments.
Journey end time
Journey start time. Default: now
Journey date. Also accepts the string tomorrow. Default: today
Do not use certain transport types for itinerary. Accepted arguments: zug, s-bahn, u-bahn, stadtbahn, tram, stadtbus, regionalbus, schnellbus, seilbahn, schiff, ast, sonstige
Set maximum number of interchanges
Return up to num connections. If unset, the default of the respective EFA server is used (usually 4 or 5).
Prefer either fast connections (default), connections with low wait time or connections with little distance to walk
If $int is a true value: Take stops close to the stop/start into account and possibly use them instead. Up to $int minutes of walking are considered acceptable.

Otherwise: Do not take stops close to stop/start into account.

Include only local trains into itinerary (default), all but ICEs, or all.

The latter two are usually way more expensive for short routes.

Set walk speed. Default: normal
If true: Request connections allowing passengers with bikes. Note that the backed may return an empty result if no such connection exists or bike-support simply isn't known.
If true: Request connections which only use low-platform ("Niederflur") vehicles. Note that the backed will return an empty result if no such connection exists.
If true: Request connections which are wheelchair-accessible. Again, note that the backend may return an empty result if no such connection exists or wheelchair-support isn't known.
If true: Request that transfers do not require usage of elevators.
If true: Request that transfers do not require usage of escalators.
If true: Request that transfers do not require stairs to be taken (i.e. ramps, escalators, elevators or similar must be available).
Options to pass to "LWP::UserAgent->new".
By default, new will create a POST request and submit it. If you do not want it to be submitted yet, set this to 0.
$efa->submit(%opts)
Submit the query to efa_url. %opts is passed on to "LWP::UserAgent->new".
$efa->routes
Returns a list of Travel::Routing::DE::EFA::Route(3pm) elements. Each one contains one method of getting from start to stop.

ACCESSORS

The following methods act like the arguments to new. See there.

$efa->departure_time($time)
$efa->arrival_time($time)
$efa->date($date)
$efa->exclude(@exclude)
$efa->max_interchanges($num)
$efa->select_interchange_by($selection)
$efa->train_type($type)
$efa->use_near_stops($duration)
$efa->walk_speed($speed)
$efa->with_bike($bool)

STATIC METHODS

Returns a list of known EFA entry points. Each list element is a hashref with the following elements.

DIAGNOSTICS

When encountering an error, Travel::Routing::DE::EFA throws a Travel::Routing::DE::EFA::Exception(3pm) object.

DEPENDENCIES

  • LWP::UserAgent(3pm)
  • XML::LibXML(3pm)

BUGS AND LIMITATIONS

None known.

SEE ALSO

  • Travel::Routing::DE::EFA::Exception(3pm)
  • Travel::Routing::DE::EFA::Route(3pm)
  • WWW::EFA is another implementation, using Moose.

AUTHOR

Copyright (C) 2009-2020 by Daniel Friesel <derf@finalrewind.org>

LICENSE

This program is licensed under the same terms as Perl itself.

2020-05-03 perl v5.30.0