X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=lib%2FHTTP%2FAnyUA%2FMiddleware%2FRequestHeaders.pm;fp=lib%2FHTTP%2FAnyUA%2FMiddleware%2FRequestHeaders.pm;h=557271a36dea12c72bc273eb67ddbf60fc126d92;hb=71cd1b88c0f201ac30cf44a4112810b3eeac7ec0;hp=0000000000000000000000000000000000000000;hpb=918be01504107763e4febdb4ed74aeda599fd33d;p=chaz%2Fp5-HTTP-AnyUA diff --git a/lib/HTTP/AnyUA/Middleware/RequestHeaders.pm b/lib/HTTP/AnyUA/Middleware/RequestHeaders.pm new file mode 100644 index 0000000..557271a --- /dev/null +++ b/lib/HTTP/AnyUA/Middleware/RequestHeaders.pm @@ -0,0 +1,76 @@ +package HTTP::AnyUA::Middleware::RequestHeaders; +# ABSTRACT: Middleware to add custom request headers + +=head1 SYNOPSIS + + $any_ua->apply_middleware('RequestHeaders', + headers => {connection => 'close'}, + override => 0, + ); + +=head1 DESCRIPTION + +This middleware adds custom headers to each request. + +=head1 SEE ALSO + +=for :list +* L + +=cut + +use warnings; +use strict; + +our $VERSION = '9999.999'; # VERSION + +use parent 'HTTP::AnyUA::Middleware'; + +use HTTP::AnyUA::Util; + + +sub init { + my $self = shift; + my %args = @_; + $self->{override} = !!$args{override}; + $self->{headers} = HTTP::AnyUA::Util::normalize_headers($args{headers}); +} + +sub request { + my $self = shift; + my ($method, $url, $args) = @_; + + if ($self->override) { + $args->{headers} = { + %{HTTP::AnyUA::Util::normalize_headers($args->{headers})}, + %{$self->headers}, + }; + } + else { + $args->{headers} = { + %{$self->headers}, + %{HTTP::AnyUA::Util::normalize_headers($args->{headers})}, + }; + } + + return $self->backend->request($method, $url, $args); +} + +=attr headers + +Get the custom headers. + +=cut + +sub headers { shift->{headers} } + +=attr override + +When true, custom headers overwrite headers in the request. The default is false (the request +headers take precedence when defined). + +=cut + +sub override { shift->{override} } + +1;