OAuth::Lite::Agent - default agent class


OAuth-Lite documentation Contained in the OAuth-Lite distribution.

Index


Code Index:

NAME

Top

OAuth::Lite::Agent - default agent class

SYNOPSIS

Top

    $agent = OAuth::Lite::Agent->new;
    my $res = $agent->request($req);

DESCRIPTION

Top

Default user agent for OAuth::Lite::Consuemr.

METHODS

Top

new

constructor.

    OAuth::Lite::Agent->new();

You can pass custom agent, that is required to implement 'request' and 'agent' methods corresponding to the same named methods of LWP::UserAgnet.

    OAuth::Lite::Agent->new( ua => $custom_agent );

agent

agent setter

    $agent->agent("MyAgent/1.0.0");

request

As same as LWP::UserAgent, pass HTTP::Request object and returns HTTP::Response object.

    $res = $agent->request($req);

filter_request

filter the HTTP::Request object before request.

filter_response

filter the HTTP::Response object after request.

SEE ALSO

Top

http://oauth.pbwiki.com/ProblemReporting

AUTHOR

Top

Lyo Kato, lyo.kato _at_ gmail.com

COPYRIGHT AND LICENSE

Top


OAuth-Lite documentation Contained in the OAuth-Lite distribution.

package OAuth::Lite::Agent;

use strict;
use warnings;

use LWP::UserAgent;
use List::MoreUtils;

sub new {
    my ($class, $ua) = @_;
    my $self = bless {
        ua => $ua || LWP::UserAgent->new,
    }, $class;
    return $self;
}

sub agent {
    my ($self, $agent) = @_;
    $self->{ua}->agent($agent);
}

sub request {
    my ($self, $req) = @_;
    $req = $self->filter_request($req);
    my $res = $self->{ua}->request($req);
    return $self->filter_response($res);
}

sub filter_request {
    my ($self, $req) = @_;
    my $accept_encoding = $req->header('Accept-Encoding') || '';
    my @encodings = split(/\s*,\s*/, $accept_encoding);
    if (@encodings == 0 || List::MoreUtils::none { $_ eq 'gzip' } @encodings) {
        push(@encodings, 'gzip');
    }
    $req->header('Accept-Encoding' => join(', ', @encodings));
    return $req;
}


sub filter_response {
    my ($self, $res) = @_;
    return $res;
}

1;