From 240651a912501d666b2fa8014f134e80798d0835 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Thu, 18 Feb 2010 15:34:56 +0100 Subject: update build uri, move error to it's own package --- lib/MooseX/Net/API.pm | 44 ++++++++------------------------------------ lib/MooseX/Net/API/Error.pm | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 36 deletions(-) create mode 100644 lib/MooseX/Net/API/Error.pm diff --git a/lib/MooseX/Net/API.pm b/lib/MooseX/Net/API.pm index c5241d6..f77dd57 100644 --- a/lib/MooseX/Net/API.pm +++ b/lib/MooseX/Net/API.pm @@ -7,8 +7,11 @@ use HTTP::Request; use Moose; use Moose::Exporter; +use MooseX::Net::API::Meta::Error; + use MooseX::Net::API::Meta::Class; use MooseX::Net::API::Meta::Method; + use MooseX::Net::API::Role::Serialize; use MooseX::Net::API::Role::Deserialize; @@ -29,7 +32,7 @@ sub init_meta { my ( $me, %options ) = @_; my $for = $options{for_class}; - Moose::Util::MetaRole::apply_metaclass_roles( + Moose::Util::MetaRole::apply_metaroles( for_class => $for, metaclass_roles => ['MooseX::Net::API::Meta::Class'], ); @@ -211,8 +214,9 @@ sub net_api_method { } } - # XXX improve uri building - my $url = $self->api_base_url . $path; + $path .= '/' if ( $self->api_base_url !~ m!/^! ); + my $url = $self->api_base_url . $path; + my $format = $self->api_format(); $url .= "." . $format if ( $self->api_format_mode() eq 'append' ); my $uri = URI->new($url); @@ -345,38 +349,6 @@ sub _do_authentication { return $req; } -package MooseX::Net::API::Error; - -use Moose; -use JSON::XS; -use Moose::Util::TypeConstraints; -use overload '""' => \&error; - -subtype error => as 'Str'; -coerce error => from 'HashRef' => via { encode_json $_}; - -has http_error => ( - is => 'ro', - isa => 'HTTP::Response', - handles => { http_message => 'message', http_code => 'code' } -); -has reason => ( - is => 'ro', - isa => 'error', - predicate => 'has_reason', - coerce => 1 -); - -sub error { - my $self = shift; - return - ( $self->has_reason && $self->reason ) - || ( $self->http_message . ": " . $self->http_code ) - || 'unknown'; -} - -1; - __END__ =head1 NAME @@ -412,7 +384,7 @@ MooseX::Net::API - Easily create client for net API ... useragent => sub { my $ua = LWP::UserAgent->new; - $ua->agent('MyUberAgent/0.23'); + $ua->agent('MyUberAgent/0.23'); return $ua }, ... diff --git a/lib/MooseX/Net/API/Error.pm b/lib/MooseX/Net/API/Error.pm new file mode 100644 index 0000000..0542613 --- /dev/null +++ b/lib/MooseX/Net/API/Error.pm @@ -0,0 +1,33 @@ +package MooseX::Net::API::Error; + +use Moose; +use JSON::XS; +use Moose::Util::TypeConstraints; +use overload '""' => \&error; + +subtype error => as 'Str'; +coerce error => from 'HashRef' => via { encode_json $_}; + +has http_error => ( + is => 'ro', + isa => 'HTTP::Response', + handles => { http_message => 'message', http_code => 'code' } +); +has reason => ( + is => 'ro', + isa => 'error', + predicate => 'has_reason', + coerce => 1 +); + +sub error { + my $self = shift; + return + ( $self->has_reason && $self->reason ) + || ( $self->http_message . ": " . $self->http_code ) + || 'unknown'; +} + +1; + +__END__ -- cgit 1.4.1