diff options
Diffstat (limited to 'lib/WebService/TFL/TubeStatus/Response/LineStatus.pm')
-rw-r--r-- | lib/WebService/TFL/TubeStatus/Response/LineStatus.pm | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/lib/WebService/TFL/TubeStatus/Response/LineStatus.pm b/lib/WebService/TFL/TubeStatus/Response/LineStatus.pm index 6caa7d6..69ddf20 100644 --- a/lib/WebService/TFL/TubeStatus/Response/LineStatus.pm +++ b/lib/WebService/TFL/TubeStatus/Response/LineStatus.pm @@ -1,33 +1,26 @@ package WebService::TFL::TubeStatus::Response::LineStatus; use Moo; use Types::Standard -all; -use namespace::autoclean; +use namespace::clean; -has is_active => ( +has [qw(statusSeverity statusSeverityDescription)] => ( is => 'ro', - isa => Bool, + isa => Str, required => 1, ); -has [qw(code class description details)] => ( +has reason => ( is => 'ro', isa => Str, - required => 1, ); -sub new_from_xml { - my ($class,$ls,$xpath) = @_; - - my %init_arg; +sub new_from_response { + my ($class,$response_data) = @_; - my ($status) = $xpath->findnodes(q{ws:Status},$ls); - $init_arg{code} = $status->findvalue(q{@ID}); - $init_arg{is_active} = $status->findvalue(q{@IsActive}) eq 'true'; - $init_arg{class} = $status->findvalue(q{@CssClass}); - $init_arg{description} = $status->findvalue(q{@Description}); - $init_arg{details} = $ls->findvalue(q{@StatusDetails}); + $response_data->{reason} =~ s{\A .+? : \s*}{}x + if $response_data->{reason}; - return $class->new(\%init_arg); + return $class->new($response_data); } 1; |