diff options
author | franck cuny <franck@lumberjaph.net> | 2010-06-02 11:35:59 +0200 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-06-02 11:35:59 +0200 |
commit | 044f1054e38474d687df9a1e98c94f24582a663c (patch) | |
tree | 5f3464c48b97e007717c8519ef6a9fa7f87ab98c | |
parent | mx::net::api::method : attributes, wrapper, validates, ... (diff) | |
download | moosex-net-api-044f1054e38474d687df9a1e98c94f24582a663c.tar.gz |
move code to roles
-rw-r--r-- | lib/MooseX/Net/API/Meta/Method/APIDeclare.pm | 49 |
1 files changed, 49 insertions, 0 deletions
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; |