diff options
Diffstat (limited to 'lib/Travel/Status/DE/HAFAS/Message.pm')
-rw-r--r-- | lib/Travel/Status/DE/HAFAS/Message.pm | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/lib/Travel/Status/DE/HAFAS/Message.pm b/lib/Travel/Status/DE/HAFAS/Message.pm new file mode 100644 index 0000000..ae2fa71 --- /dev/null +++ b/lib/Travel/Status/DE/HAFAS/Message.pm @@ -0,0 +1,185 @@ +package Travel::Status::DE::HAFAS::Message; + +use strict; +use warnings; +use 5.014; + +use parent 'Class::Accessor'; + +our $VERSION = '6.03'; + +Travel::Status::DE::HAFAS::Message->mk_ro_accessors( + qw(short type text code prio is_him ref_count)); + +sub new { + my ( $obj, %conf ) = @_; + + my $json = $conf{json}; + my $is_him = $conf{is_him}; + + my $short = $json->{txtS}; + my $text = $json->{txtN}; + my $type = $json->{type}; + my $code = $json->{code}; + my $prio = $json->{prio}; + + if ($is_him) { + $short = $json->{head}; + $text = $json->{text}; + $code = $json->{hid}; + } + + my $ref = { + short => $short, + text => $text, + type => $type, + code => $code, + prio => $prio, + is_him => $is_him, + ref_count => $conf{ref_count}, + }; + + bless( $ref, $obj ); + + return $ref; +} + +sub TO_JSON { + my ($self) = @_; + + return { %{$self} }; +} + +1; + +__END__ + +=head1 NAME + +Travel::Status::DE::HAFAS::Message - An arrival/departure-related message. + +=head1 SYNOPSIS + + if ($message->text) { + printf("%s: %s\n", $message->short, $message->text); + } + else { + say $message->short; + } + +=head1 VERSION + +version 6.03 + +=head1 DESCRIPTION + +Travel::Status::DE::HAFAS::Message describes a message belonging to an +arrival or departure. Messages may refer to planned schedule changes due to +construction work, the expected passenger volume, or similar. + +=head1 METHODS + +=head2 ACCESSORS + +=over + +=item $message->short + +Message header. May be a concise single-sentence summary or a mostly useless +string such as "Information". Does not contain newlines. + +=item $message->text + +Detailed message content. Does not contain newlines. + +=item $message->code + +Two-digit message code, seems to be only used with messages of type "A". +Details unknown. + +=item $message->type + +A single character indicating the message type. +The following types are known: + +=over + +=item A + +Generic information about a specific trip such as "WiFi available", "air +conditioning", "DB tickets are not valid here", or "from here on as [line] +towards [destination]". + +=item C + +"Current information available", "Journey cancelled", "connection may not be caught", possibly more. + +=item D + +Large-scale disruption, e.g. medical emergency on line. + +=item G + +Platform change, possibly more. + +=item H + +Misc stuff such as "Journey contains trains with mandatory reservation" or +"ICE Sprinter". + +=item L + +Replacement journey + +=item M + +Free-text infos about construction sites, broken elevators, large events and +similar occasions. + +=item P + +Journey has been cancelled, possibly more. + +=back + +=item $message->ref_count + +Counter indicating how often this message is used by the requested +arrivals/departures. ref_count is an integer between 1 and the number of +results. If ref_count is 1, it is referenced by a single result only. + +=item $message->is_him + +True if it is a HIM message (typically used for service information), false +if not (message may be a REM instead, indicating e.g. presence of a bicycle +carriage or WiFi). + +=back + +=head1 DIAGNOSTICS + +None. + +=head1 DEPENDENCIES + +=over + +=item Class::Accessor(3pm) + +=back + +=head1 BUGS AND LIMITATIONS + +None known. + +=head1 SEE ALSO + +Travel::Status::DE::HAFAS(3pm). + +=head1 AUTHOR + +Copyright (C) 2020-2023 by Birte Kristina Friesel E<lt>derf@finalrewind.orgE<gt> + +=head1 LICENSE + +This module is licensed under the same terms as Perl itself. |