From b3956bfdb7d000f127b2a70445cbf9bf2287a634 Mon Sep 17 00:00:00 2001 From: Gianni Ceccarelli Date: Thu, 7 Nov 2013 12:05:17 +0000 Subject: migrate to Moo: tube client --- lib/WebService/TFL/TubeStatus.pm | 11 +++++------ lib/WebService/TFL/TubeStatus/Response.pm | 6 ++++-- lib/WebService/TFL/TubeStatus/Response/Line.pm | 10 ++++++---- lib/WebService/TFL/TubeStatus/Response/LineStatus.pm | 7 ++++--- lib/WebService/TFL/TubeStatus/Types.pm | 11 +++++++++++ 5 files changed, 30 insertions(+), 15 deletions(-) create mode 100644 lib/WebService/TFL/TubeStatus/Types.pm (limited to 'lib') diff --git a/lib/WebService/TFL/TubeStatus.pm b/lib/WebService/TFL/TubeStatus.pm index 79230ce..3b69997 100644 --- a/lib/WebService/TFL/TubeStatus.pm +++ b/lib/WebService/TFL/TubeStatus.pm @@ -1,7 +1,7 @@ package WebService::TFL::TubeStatus; -use Moose; -use Moose::Util::TypeConstraints; -use MooseX::Types::URI 'Uri'; +use Moo; +use Type::Utils -all; +use Types::URI 'Uri'; use XML::LibXML; use XML::LibXML::XPathContext; use WebService::TFL::TubeStatus::Response; @@ -9,8 +9,7 @@ use namespace::autoclean; has user_agent => ( isa => duck_type(['get']), - is => 'ro', - lazy_build => 1, + is => 'lazy', ); sub _build_user_agent { require LWP::UserAgent; @@ -22,7 +21,7 @@ sub _build_user_agent { has uri => ( isa => Uri, is => 'ro', - coerce => 1, + coerce => Uri->coercion, default => 'http://cloud.tfl.gov.uk/TrackerNet/LineStatus', ); diff --git a/lib/WebService/TFL/TubeStatus/Response.pm b/lib/WebService/TFL/TubeStatus/Response.pm index f8cd8bf..191abe7 100644 --- a/lib/WebService/TFL/TubeStatus/Response.pm +++ b/lib/WebService/TFL/TubeStatus/Response.pm @@ -1,11 +1,13 @@ package WebService::TFL::TubeStatus::Response; -use Moose; +use Moo; +use WebService::TFL::TubeStatus::Types -all; use WebService::TFL::TubeStatus::Response::Line; +use Types::Standard -all; use namespace::autoclean; has lines => ( is => 'ro', - isa => 'ArrayRef[WebService::TFL::TubeStatus::Response::Line]', + isa => ArrayRef[LineT], required => 1, ); diff --git a/lib/WebService/TFL/TubeStatus/Response/Line.pm b/lib/WebService/TFL/TubeStatus/Response/Line.pm index 11d3538..9779443 100644 --- a/lib/WebService/TFL/TubeStatus/Response/Line.pm +++ b/lib/WebService/TFL/TubeStatus/Response/Line.pm @@ -1,23 +1,25 @@ package WebService::TFL::TubeStatus::Response::Line; -use Moose; +use Moo; +use Types::Standard -all; +use WebService::TFL::TubeStatus::Types -all; use WebService::TFL::TubeStatus::Response::LineStatus; use namespace::autoclean; has id => ( is => 'ro', - isa => 'Num', + isa => Num, required => 1, ); has name => ( is => 'ro', - isa => 'Str', + isa => Str, required => 1, ); has status => ( is => 'ro', - isa => 'WebService::TFL::TubeStatus::Response::LineStatus', + isa => LineStatusT, required => 1, ); diff --git a/lib/WebService/TFL/TubeStatus/Response/LineStatus.pm b/lib/WebService/TFL/TubeStatus/Response/LineStatus.pm index e223bb6..6caa7d6 100644 --- a/lib/WebService/TFL/TubeStatus/Response/LineStatus.pm +++ b/lib/WebService/TFL/TubeStatus/Response/LineStatus.pm @@ -1,16 +1,17 @@ package WebService::TFL::TubeStatus::Response::LineStatus; -use Moose; +use Moo; +use Types::Standard -all; use namespace::autoclean; has is_active => ( is => 'ro', - isa => 'Bool', + isa => Bool, required => 1, ); has [qw(code class description details)] => ( is => 'ro', - isa => 'Str', + isa => Str, required => 1, ); diff --git a/lib/WebService/TFL/TubeStatus/Types.pm b/lib/WebService/TFL/TubeStatus/Types.pm new file mode 100644 index 0000000..d1cb141 --- /dev/null +++ b/lib/WebService/TFL/TubeStatus/Types.pm @@ -0,0 +1,11 @@ +package WebService::TFL::TubeStatus::Types; +use strict; +use warnings; +use Type::Library -base, -declare => qw(LineT LineStatusT); +use Type::Utils -all; +use namespace::autoclean; + +class_type LineT, { class => 'WebService::TFL::TubeStatus::Response::Line' }; +class_type LineStatusT, { class => 'WebService::TFL::TubeStatus::Response::LineStatus' }; + +1; -- cgit v1.2.3