diff options
| -rwxr-xr-x | bin/efa | 4 | ||||
| -rw-r--r-- | lib/Travel/Routing/DE/VRR.pm | 13 | 
2 files changed, 13 insertions, 4 deletions
| @@ -75,8 +75,8 @@ sub handle_efa_exception {  		);  		exit 4;  	} -	if ( $e->isa('Travel::Routing::DE::VRR::Exception::NoConnections') ) { -		printf STDERR ( "Error: %s: %s\n", $e->description, $e->error ); +	if ( $e->isa('Travel::Routing::DE::VRR::Exception::Other') ) { +		printf STDERR ( "Error: %s: %s\n", $e->description, $e->message );  		exit 5;  	} diff --git a/lib/Travel/Routing/DE/VRR.pm b/lib/Travel/Routing/DE/VRR.pm index c7193e1..603ac8b 100644 --- a/lib/Travel/Routing/DE/VRR.pm +++ b/lib/Travel/Routing/DE/VRR.pm @@ -33,9 +33,10 @@ use Exception::Class (  		description => 'ambiguous input',  		fields      => [ 'post_key', 'possibilities' ],  	}, -	'Travel::Routing::DE::VRR::Exception::NoConnections' => { +	'Travel::Routing::DE::VRR::Exception::Other' => {  		isa         => 'Travel::Routing::DE::VRR::Exception', -		description => 'got no connections', +		description => 'EFA backend returned an error', +		fields      => ['message'],  	},  ); @@ -580,12 +581,20 @@ sub parse {  	my $xp_element = XML::LibXML::XPathExpression->new(  		'//itdItinerary/itdRouteList/itdRoute'); +	my $xp_err = XML::LibXML::XPathExpression->new( +		'//itdTripRequest/itdMessage[@type="error"]');  	my $xp_odv = XML::LibXML::XPathExpression->new('//itdOdv');  	for my $odv ( $tree->findnodes($xp_odv) ) {  		$self->check_ambiguous($odv);  	} +	my $err = ( $tree->findnodes($xp_err) )[0]; +	if ($err) { +		Travel::Routing::DE::VRR::Exception::Other->throw( +			message => $err->textContent ); +	} +  	for my $part ( $tree->findnodes($xp_element) ) {  		$self->parse_part($part);  	} | 
