summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2024-09-28 09:40:36 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2024-09-28 09:41:43 +0200
commit5c26e3b6a426343e2b3f852311fe0028ab7d75b8 (patch)
treeb080f65a11c1f8bc8c4c694b552fb0cf828d8510
parent99ebdfe5e7f171c3fc312b2a8f61e1480fdf991d (diff)
Move static service accessors to Travel::Status::DE::EFA
-rw-r--r--Changelog4
-rwxr-xr-xbin/efa-m13
-rw-r--r--lib/Travel/Status/DE/EFA.pm45
3 files changed, 52 insertions, 10 deletions
diff --git a/Changelog b/Changelog
index d05662b..edb6b15 100644
--- a/Changelog
+++ b/Changelog
@@ -9,8 +9,8 @@ git HEAD
* Stop: Add "place", "full_name" and "occupancy" accessors
* Stop: Remove "name_suf" accessor; use "name" instead
* Line: Add "number" accessor
- * EFA: Remove "get_efa_urls" and "get_service" functions; use the newly
- introduced Travel::Status::DE::EFA::Services package instead.
+ * EFA: Remove static "get_efa_urls" function; use "get_service_ids" instead
+ * EFA: Add static "get_service_ids" function
* efa-m: -Oa, -Ob, -Of: show per-stop occupancy, if available
Travel::Status::DE::VRR 2.02 - Sun May 19 2024
diff --git a/bin/efa-m b/bin/efa-m
index a22ae72..d788932 100755
--- a/bin/efa-m
+++ b/bin/efa-m
@@ -12,7 +12,6 @@ use Encode qw(decode);
use Getopt::Long qw(:config no_ignore_case bundling);
use List::Util qw(first max none);
use Travel::Status::DE::EFA;
-use Travel::Status::DE::EFA::Services;
my $service = 'VRR';
my $efa_url;
@@ -113,7 +112,7 @@ if ($efa_url) {
$service = undef;
}
elsif ($service) {
- my $service_ref = Travel::Status::DE::EFA::Services::get_service($service);
+ my $service_ref = Travel::Status::DE::EFA::get_service($service);
if ( not $service_ref ) {
printf STDERR (
"Error: Unknown service '%s'. See 'efa-m --list' for a "
@@ -157,9 +156,8 @@ sub show_help {
sub show_services {
printf( "%-45s %-14s %s\n\n", 'service', 'abbr. (-s)', 'url (-u)' );
- for my $shortname ( Travel::Status::DE::EFA::Services::get_service_ids() ) {
- my $service
- = Travel::Status::DE::EFA::Services::get_service($shortname);
+ for my $shortname ( Travel::Status::DE::EFA::get_service_ids() ) {
+ my $service = Travel::Status::DE::EFA::get_service($shortname);
printf( "%-45s %-14s %s\n",
$service->{name}, $shortname, $service->{url} );
}
@@ -441,14 +439,13 @@ sub show_results {
}
if ( $discover or $discover_and_print ) {
- for my $shortname ( Travel::Status::DE::EFA::Services::get_service_ids() ) {
+ for my $shortname ( Travel::Status::DE::EFA::get_service_ids() ) {
$efa = new_efa($shortname);
if ( $efa and not $efa->errstr ) {
if ($discover_and_print) {
last;
}
- my $service_ref
- = Travel::Status::DE::EFA::Services::get_service($shortname);
+ my $service_ref = Travel::Status::DE::EFA::get_service($shortname);
printf(
"%s / %s (%s)\n -> efa-m -s %s %s\n\n",
$service_ref->{name}, $shortname, $service_ref->{url},
diff --git a/lib/Travel/Status/DE/EFA.pm b/lib/Travel/Status/DE/EFA.pm
index b95ff41..6aa505b 100644
--- a/lib/Travel/Status/DE/EFA.pm
+++ b/lib/Travel/Status/DE/EFA.pm
@@ -404,6 +404,16 @@ sub result {
return Travel::Status::DE::EFA::Trip->new( json => $self->{response} );
}
+# static
+sub get_service_ids {
+ return Travel::Status::DE::EFA::Services::get_service_ids(@_);
+}
+
+# static
+sub get_service {
+ return Travel::Status::DE::EFA::Services::get_service(@_);
+}
+
1;
__END__
@@ -547,6 +557,41 @@ nothing (undef / empty list) otherwise.
Returns a list of Travel::Status::DE::EFA::Departure(3pm) objects, each one describing
one departure.
+=item Travel::Status::DE::EFA::get_service_ids()
+
+Returns the list of supported services (backends).
+
+=item Travel::Status::DE::EFA::get_service(I<service>)
+
+Returns a hashref describing the requested I<service> ID with the following keys.
+
+=over
+
+=item B<name> => I<string>
+
+Provider name, e.g. Verkehrsverbund Oberelbe.
+
+=item B<url> => I<string>
+
+Backend base URL.
+
+=item B<homepage> => I<string> (optional)
+
+Provider homepage.
+
+=item B<languages> => I<arrayref> (optional)
+
+Supportde languages, e.g. de, en.
+
+=item B<coverage> => I<hashref>
+
+Area in which the service provides near-optimal coverage. Typically, this
+means a (nearly) complete list of departures and real-time data. The
+hashref contains two optional keys: B<area> (GeoJSON) and B<regions> (list of
+strings, e.g. "DE" or "CH-BE").
+
+=back
+
=back
=head1 DIAGNOSTICS