From e97449eaa8bd3a408763057f9ca2253d93e2a3d0 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Fri, 16 Jul 2010 16:10:41 +0200 Subject: rename from mx::net::api to net::http::api --- lib/Net/HTTP/API/Role/Authentication.pm | 67 +++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 lib/Net/HTTP/API/Role/Authentication.pm (limited to 'lib/Net/HTTP/API/Role/Authentication.pm') diff --git a/lib/Net/HTTP/API/Role/Authentication.pm b/lib/Net/HTTP/API/Role/Authentication.pm new file mode 100644 index 0000000..27728c3 --- /dev/null +++ b/lib/Net/HTTP/API/Role/Authentication.pm @@ -0,0 +1,67 @@ +package Net::HTTP::API::Role::Authentication; + +# ABSTRACT: Add authentication informations to request header + +use Moose::Role; + +has api_username => ( + is => 'rw', + isa => 'Str', + predicate => 'has_api_username', +); + +has api_password => ( + is => 'rw', + isa => 'Str', + predicate => 'has_api_password', +); + +# ugly :( +after BUILDALL => sub { + my $self = shift; + + for (qw/api_username api_password/) { + my $predicate = 'has_' . $_; + my $value = $self->meta->get_api_option($_); + $self->$_($value) if $value && !$self->$predicate; + } + + if ( $self->meta->get_api_option('authentication') + || $self->meta->get_api_option('authentication_method')) + { + my $auth_method = $self->meta->get_api_option('authentication_method'); + if ($auth_method) { + $self->api_useragent->add_handler( + request_prepare => sub { $self->$auth_method(@_) }); + } + else { + if ($self->has_api_username && $self->has_api_password) { + $self->api_useragent->add_handler( + request_prepare => sub { + my $req = shift; + $req->headers->authorization_basic($self->api_username, + $self->api_password); + } + ); + } + } + } +}; + +1; + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +=head2 ATTRIBUTES + +=over 4 + +=item B + +=item B + +=back +64: hit eof while in pod documentation (no =cut seen) + this can cause trouble with some pod utilities -- cgit v1.2.3