diff options
| author | franck cuny <franck@lumberjaph.net> | 2010-11-01 09:36:31 +0100 |
|---|---|---|
| committer | franck cuny <franck@lumberjaph.net> | 2010-11-01 09:36:31 +0100 |
| commit | 730f149906a80efcf2a662450ee522af740a0cc9 (patch) | |
| tree | 4d776f9b7da3301310a4302dfbebf28c5fc38673 /lib/Net/HTTP/Spore/Role | |
| parent | fix method name (diff) | |
| parent | add headers (diff) | |
| download | net-http-spore-730f149906a80efcf2a662450ee522af740a0cc9.tar.gz | |
merge
Diffstat (limited to 'lib/Net/HTTP/Spore/Role')
| -rw-r--r-- | lib/Net/HTTP/Spore/Role/Request.pm | 38 | ||||
| -rw-r--r-- | lib/Net/HTTP/Spore/Role/UserAgent.pm | 1 |
2 files changed, 27 insertions, 12 deletions
diff --git a/lib/Net/HTTP/Spore/Role/Request.pm b/lib/Net/HTTP/Spore/Role/Request.pm index 7fbb290..a0d61b1 100644 --- a/lib/Net/HTTP/Spore/Role/Request.pm +++ b/lib/Net/HTTP/Spore/Role/Request.pm @@ -33,27 +33,41 @@ sub http_request { } } - if (defined $response) { - map { $_->($response) } reverse @middlewares; - return $response; + return + $self->_execute_middlewares_on_response( $response, @middlewares ) + if defined $response; + + $response = $self->_request($request); + + return $self->_execute_middlewares_on_response( $response, @middlewares ); +} + +sub _execute_middlewares_on_response { + my ($self, $response, @middlewares) = @_; + + foreach my $mw ( reverse @middlewares ) { + my $res = $mw->($response); + $response = $res + if ( defined $res + && Scalar::Util::blessed($res) + && $res->isa('Net::HTTP::Spore::Response') ); } - my $final = $request->finalize; - $self->_trace_msg("<- ".$request->method. " => ".$request->uri); + $response; +} + +sub _request { + my ($self, $request) = @_; - my $result = $self->request($final); + my $result = $self->request($request->finalize); - $response = $request->new_response( + my $response = $request->new_response( $result->code, $result->headers, $result->content, ); - $self->_trace_msg("<- HTTP Status".$result->code ); - - map { $_->($response) } reverse @middlewares; - - $response; + return $response; } 1; diff --git a/lib/Net/HTTP/Spore/Role/UserAgent.pm b/lib/Net/HTTP/Spore/Role/UserAgent.pm index 6bfaa5a..9b99ab8 100644 --- a/lib/Net/HTTP/Spore/Role/UserAgent.pm +++ b/lib/Net/HTTP/Spore/Role/UserAgent.pm @@ -15,6 +15,7 @@ has api_useragent => ( my $ua = LWP::UserAgent->new(); $ua->agent( "Net::HTTP::Spore v" . $Net::HTTP::Spore::VERSION . " (Perl)" ); $ua->env_proxy; + $ua->max_redirect(0); return $ua; } ); |
