Commit e360b55e authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Result: Remove _date, _time accessors, add more route support

parent 4ad22152
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -53,6 +53,9 @@ sub new {
		$dt_req->add( hours => 1 );
	}

	@{ $self->{results} }
	  = sort { $a->{datetime} <=> $b->{datetime} } @{ $self->{results} };

	return $self;
}

@@ -60,9 +63,6 @@ sub get_timetable {
	my ( $self, $eva, $dt ) = @_;
	my $ua = $self->{user_agent};

	say $dt->strftime(
		"http://iris.noncd.db.de/iris-tts/timetable/plan/${eva}/%y%m%d/%H");

	my $res = $ua->get(
		$dt->strftime(
			"http://iris.noncd.db.de/iris-tts/timetable/plan/${eva}/%y%m%d/%H")
@@ -75,6 +75,8 @@ sub get_timetable {

	my $xml = XML::LibXML->load_xml( string => $res->decoded_content );

	my $station = ( $xml->findnodes('/timetable') )[0]->getAttribute('station');

	for my $s ( $xml->findnodes('/timetable/s') ) {
		my $id   = $s->getAttribute('id');
		my $e_tl = ( $s->findnodes('./tl') )[0];
@@ -92,6 +94,7 @@ sub get_timetable {
			train_no  => $e_tl->getAttribute('n'),    # dep number
			type      => $e_tl->getAttribute('c'),    # S/ICE/ERB/...
			line_no   => $e_tl->getAttribute('l'),    # 1 -> S1, ...
			station   => $station,
			unknown_o => $e_tl->getAttribute('o'),    # owner: 03/80/R2/...
		);

@@ -115,8 +118,6 @@ sub get_timetable {
		);
	}

	say $xml->toString(1);

	return $self;
}

+30 −32
Original line number Diff line number Diff line
@@ -14,11 +14,9 @@ use DateTime::Format::Strptime;
our $VERSION = '0.00';

Travel::Status::DE::IRIS::Result->mk_ro_accessors(
	qw(arrival_date arrival_datetime arrival_time date datetime
	  departure_date departure_datetime departure_time line_no raw_id
	  start_date start_datetime start_time stop_no
	  time train_id train_no
	  type unknown_t unknown_o)
	qw(arrival date datetime departure line_no raw_id route route_post route_pre
	  route_start route_end
	  start stop_no time train_id train_no type unknown_t unknown_o)
);

sub new {
@@ -33,55 +31,61 @@ sub new {

	my ( $train_id, $start_ts, $stop_no ) = split( /.\K-/, $opt{raw_id} );

	$ref->{start_datetime} = $strp->parse_datetime($start_ts);
	$ref->{start_date}     = $ref->{start_datetime}->strftime('%d.%m.%Y');
	$ref->{start_time}     = $ref->{start_datetime}->strftime('%H:%M');
	$ref->{start} = $strp->parse_datetime($start_ts);

	$ref->{train_id} = $train_id;
	$ref->{stop_no}  = $stop_no;

	$ref->{arrival_datetime}   = $strp->parse_datetime( $opt{arrival_ts} );
	$ref->{departure_datetime} = $strp->parse_datetime( $opt{departure_ts} );
	my $ar = $ref->{arrival}   = $strp->parse_datetime( $opt{arrival_ts} );
	my $dp = $ref->{departure} = $strp->parse_datetime( $opt{departure_ts} );

	if ( not( $ref->{arrival_datetime} or $ref->{departure_datetime} ) ) {
	if ( not( $ar or $dp ) ) {
		cluck(
			sprintf(
				"Neither '%s' nor '%s' are valid timestamps",
				"Neither arrival '%s' nor departure '%s' are valid "
				  . "timestamps - can't handle this train",
				$opt{arrival_ts}, $opt{departure_ts}
			)
		);
	}

	if ( $ref->{arrival_datetime} ) {
		my $dt = $ref->{datetime} = $ref->{arrival_datetime};
		$ref->{arrival_date} = $ref->{date} = $dt->strftime('%d.%m.%Y');
		$ref->{arrival_time} = $ref->{time} = $dt->strftime('%H:%M');
	}
	if ( $ref->{departure_datetime} ) {
		my $dt = $ref->{datetime} = $ref->{departure_datetime};
		$ref->{departure_date} = $ref->{date} = $dt->strftime('%d.%m.%Y');
		$ref->{departure_time} = $ref->{time} = $dt->strftime('%H:%M');
	}
	my $dt = $ref->{datetime} = $ar // $dp;

	$ref->{date} = $dt->strftime('%d.%m.%Y');
	$ref->{time} = $dt->strftime('%H:%M');

	$ref->{route_pre}  = [ split( qr{\|}, $ref->{route_pre}  // q{} ) ];
	$ref->{route_post} = [ split( qr{\|}, $ref->{route_post} // q{} ) ];

	$ref->{route_end}   = $ref->{route_post}[-1] || $ref->{station};
	$ref->{route_start} = $ref->{route_pre}[0]   || $ref->{station};

	return bless( $ref, $obj );
}

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

	return $self->route_start;
}

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

	return $self->{route_end};
	return $self->route_end;
}

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

	return $self->{train};
	return
	  sprintf( '%s %s', $self->{type}, $self->{line_no} // $self->{train_no} );
}

sub origin {
sub train {
	my ($self) = @_;

	return $self->{route_end};
	return $self->line;
}

sub route_interesting {
@@ -134,12 +138,6 @@ sub route_interesting {

}

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

	return @{ $self->{route} };
}

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