From 044f1054e38474d687df9a1e98c94f24582a663c Mon Sep 17 00:00:00 2001 From: franck cuny Date: Wed, 2 Jun 2010 11:35:59 +0200 Subject: move code to roles --- lib/MooseX/Net/API/Meta/Method/APIDeclare.pm | 49 ++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 lib/MooseX/Net/API/Meta/Method/APIDeclare.pm (limited to 'lib/MooseX/Net/API') diff --git a/lib/MooseX/Net/API/Meta/Method/APIDeclare.pm b/lib/MooseX/Net/API/Meta/Method/APIDeclare.pm new file mode 100644 index 0000000..4ad5150 --- /dev/null +++ b/lib/MooseX/Net/API/Meta/Method/APIDeclare.pm @@ -0,0 +1,49 @@ +package MooseX::Net::API::Meta::Method::APIDeclare; + +use Moose::Role; +use MooseX::Net::API::Error; + +has options => ( + is => 'ro', + traits => ['Hash'], + isa => 'HashRef[Str|CodeRef]', + default => sub { {} }, + lazy => 1, + handles => { + set_option => 'set', + get_option => 'get', + }, +); + +sub add_net_api_declare { + my ($meta, $name, %options) = @_; + + if ($options{useragent}) { + die MooseX::Net::API::Error->new( + reason => "'useragent' must be a CODE ref") + unless ref $options{useragent} eq 'CODE'; + $meta->set_option(useragent => delete $options{useragent}); + } + + # XXX custom authentication_method (replace with before request !) + + # XXX for backward compatibility + for my $attr (qw/base_url format username password/) { + my $attr_name = "api_" . $attr; + if (exists $options{$attr} && !exists $options{$attr_name}) { + $options{$attr_name} = delete $options{$attr}; + } + } + + for my $attr (qw/api_base_url api_format api_username api_password authentication/) { + $meta->set_option($attr => $options{$attr}) if defined $options{$attr}; + } + + # XXX before_request after_request + + if (keys %options) { + # XXX croak + } +} + +1; -- cgit 1.4.1