Commit 311e4802 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Split up Error.pm into WWW::Efa::Error::{Backend,Setup}

parent 5e15ca49
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -104,10 +104,6 @@ if ($efa->{'error'}) {
	die $efa->{'error'}->as_string();
}

if ($efa->isa('WWW::Efa::Error')) {
	die($efa->as_string);
}

if ($opt->{'test-parse'}) {
	local $/ = undef;
	$efa->{'html_reply'} = <STDIN>;
+25 −31
Original line number Diff line number Diff line
@@ -40,7 +40,8 @@ use 5.010;
use base 'Exporter';

use XML::LibXML;
use WWW::Efa::Error;
use WWW::Efa::Error::Setup;
use WWW::Efa::Error::Backend;
use WWW::Mechanize;

our @EXPORT_OK = ();
@@ -60,8 +61,8 @@ sub post_time {
	}

	if ($time !~ / ^ [0-2]? \d : [0-5]? \d $ /x) {
		die WWW::Efa::Error->new(
			'internal', 'conf', ['time', $time, 'Must match HH:MM']
		die WWW::Efa::Error::Setup->new(
			'time', $time, 'Must match HH:MM'
		);
	}
	@{$post}{'itdTimeHour', 'itdTimeMinute'} = split(/:/, $time);
@@ -71,8 +72,8 @@ sub post_date {
	my ($post, $date) = @_;

	if ($date !~ /^ [0-3]? \d \. [01]? \d \. (?: \d{4} )? $/x) {
		die WWW::Efa::Error->new(
			'internal', 'conf', ['date', $date, 'Must match DD.MM.[YYYY]']
		die WWW::Efa::Error::Setup->new(
			'date', $date, 'Must match DD.MM.[YYYY]'
		);
	}
	@{$post}{'itdDateDay', 'itdDateMonth', 'itdDateYear'} = split(/\./, $date);
@@ -95,13 +96,10 @@ sub post_exclude {
			}
		}
		if (not $ok) {
			die WWW::Efa::Error->new(
				'internal', 'conf',
				[
			die WWW::Efa::Error::Setup->new(
				'exclude',
				join(q{ }, @exclude),
				'Must consist of ' . join(q{ }, @mapping)
				]
			);
		}
	}
@@ -115,9 +113,8 @@ sub post_prefer {
		when ('nowait') { $post->{'routeType'} = 'LEASTINTERCHANGE' }
		when ('nowalk') { $post->{'routeType'} = 'LEASTWALKING' }
		default {
			die WWW::Efa::Error->new(
				'internal', 'conf',
				['prefer', $prefer, 'Must be either speed, nowait or nowalk']
			die WWW::Efa::Error::Setup->new(
				'prefer', $prefer, 'Must be either speed, nowait or nowalk'
			);
		}
	}
@@ -131,9 +128,8 @@ sub post_include {
		when ('ic')    { $post->{'lineRestriction'} = 401 }
		when ('ice')   { $post->{'lineRestriction'} = 400 }
		default {
			die WWW::Efa::Error->new(
				'internal', 'conf',
				['include', $include, 'Must be one of local/ic/ice']
			die WWW::Efa::Error::Setup->new(
				'include', $include, 'Must be one of local/ic/ice'
			);
		}
	}
@@ -146,9 +142,8 @@ sub post_walk_speed {
		$post->{'changeSpeed'} = $walk_speed;
	}
	else {
		die WWW::Efa::Error->new(
			'internal', 'conf',
			['walk_speed', $walk_speed, 'Must be normal, fast or slow']
		die WWW::Efa::Error::Setup->new(
			'walk_speed', $walk_speed, 'Must be normal, fast or slow'
		);
	}
}
@@ -157,9 +152,8 @@ sub post_place {
	my ($post, $which, $place, $stop, $type) = @_;

	if (not ($place and $stop)) {
		die WWW::Efa::Error->new(
			'internal', 'conf',
			['place', $which, "Need at least two elements"]
		die WWW::Efa::Error::Setup->new(
			'place', $which, "Need at least two elements"
		);
	}

@@ -263,8 +257,8 @@ sub parse_initial {
		return $cons;
	}
	else {
		return WWW::Efa::Error->new(
			'efa.vrr.de', 'no data'
		return WWW::Efa::Error::Backend->new(
			'no data'
		);
	}
}
@@ -334,7 +328,7 @@ sub new {
	eval {
		$ref->{'post'} = create_post(\%conf);
	};
	if ($@ and ref($@) eq 'WWW::Efa::Error') {
	if ($@ and ref($@) eq 'WWW::Efa::Error::Setup') {
		$ref->{'error'} = $@;
	}

@@ -398,8 +392,8 @@ sub check_ambiguous {
			push(@possible, $val->textContent());
		}

		return WWW::Efa::Error->new(
			'efa.vrr.de', 'ambiguous',
		return WWW::Efa::Error::Backend->new(
			'ambiguous',
			\@possible
		);
	}
@@ -415,8 +409,8 @@ sub check_no_connections {
	my $err_node = $tree->findnodes($xp_err_img)->[0];

	if ($err_node) {
		return WWW::Efa::Error->new(
			'efa.vrr.de', 'error',
		return WWW::Efa::Error::Backend->new(
			'error',
			$err_node->parentNode()->parentNode()->textContent()
		);
	}

lib/WWW/Efa/Error.pm

deleted100644 → 0
+0 −60
Original line number Diff line number Diff line
package WWW::Efa::Error;

use strict;
use warnings;
use 5.010;

use base 'Exporter';

our @EXPORT_OK = qw{};

# source: internal / efa.vrr.de
# type: internal: conf
#     efa.vrr.de: ambiguous / error / no data
sub new {
	my ($obj, $source, $type, $data) = @_;
	my $ref = {};

	$ref->{'source'} = $source;
	$ref->{'type'}   = $type;
	$ref->{'data'}   = $data;

	return bless($ref, $obj);
}

sub as_string {
	my ($self) = @_;
	my $ret;

	if ($self->{'source'} eq 'internal') {
		$ret = sprintf(
			"WWW::Efa config error: Wrong arg for option %s: %s\n%s\n",
			@{$self->{'data'}}
		);
	}
	elsif ($self->{'source'} eq 'efa.vrr.de') {
		given ($self->{'type'}) {
			when ('no data') {
				$ret = "WWW::Efa: efa.vrr.de returned no data\n";
			}
			when ('ambiguous') {
				$ret = sprintf(
					"WWW::Efa: efa.vrr.de: Ambiguous input for %s:\n",
					shift(@{$self->{'data'}}),
				);
				foreach my $possible (@{$self->{'data'}}) {
					$ret .= "\t${possible}\n";
				}
			}
			when ('error') {
				$ret = sprintf(
					"WWW::Efa: efa.vrr.de error:\n%s\n",
					$self->{'data'},
				);
			}
		}
	}
	return $ret;
}

1;
+48 −0
Original line number Diff line number Diff line
package WWW::Efa::Error::Backend;

use strict;
use warnings;
use 5.010;

use base 'Exporter';

our @EXPORT_OK = qw{};

sub new {
	my ($obj, $type, $data) = @_;
	my $ref = {};

	$ref->{'type'}   = $type;
	$ref->{'data'}   = $data;

	return bless($ref, $obj);
}

sub as_string {
	my ($self) = @_;
	my $ret;

	given ($self->{'type'}) {
		when ('no data') {
			$ret = "WWW::Efa: efa.vrr.de returned no data\n";
		}
		when ('ambiguous') {
			$ret = sprintf(
				"WWW::Efa: efa.vrr.de: Ambiguous input for %s:\n",
				shift(@{$self->{'data'}}),
			);
			foreach my $possible (@{$self->{'data'}}) {
				$ret .= "\t${possible}\n";
			}
		}
		when ('error') {
			$ret = sprintf(
				"WWW::Efa: efa.vrr.de error:\n%s\n",
				$self->{'data'},
			);
		}
	}
	return $ret;
}

1;
+32 −0
Original line number Diff line number Diff line
package WWW::Efa::Error::Setup;

use strict;
use warnings;
use 5.010;

use base 'Exporter';

our @EXPORT_OK = qw{};

sub new {
	my ($obj, $key, $value, $msg) = @_;
	my $ref = {};

	$ref->{'key'}     = $key;
	$ref->{'value'}   = $value;
	$ref->{'message'} = $msg;

	return bless($ref, $obj);
}

sub as_string {
	my ($self) = @_;
	my $ret;

	return sprintf(
		"WWW::Efa setup error: Wrong arg for option %s: %s\n%s\n",
		@{$self}{'key', 'value', 'message'},
	);
}

1;
Loading