]> Dogcows Code - chaz/p5-HTTP-AnyUA/blob - lib/HTTP/AnyUA/Middleware/RequestHeaders.pm
add RequestHeaders middleware
[chaz/p5-HTTP-AnyUA] / lib / HTTP / AnyUA / Middleware / RequestHeaders.pm
1 package HTTP::AnyUA::Middleware::RequestHeaders;
2 # ABSTRACT: Middleware to add custom request headers
3
4 =head1 SYNOPSIS
5
6 $any_ua->apply_middleware('RequestHeaders',
7 headers => {connection => 'close'},
8 override => 0,
9 );
10
11 =head1 DESCRIPTION
12
13 This middleware adds custom headers to each request.
14
15 =head1 SEE ALSO
16
17 =for :list
18 * L<HTTP::AnyUA::Middleware>
19
20 =cut
21
22 use warnings;
23 use strict;
24
25 our $VERSION = '9999.999'; # VERSION
26
27 use parent 'HTTP::AnyUA::Middleware';
28
29 use HTTP::AnyUA::Util;
30
31
32 sub init {
33 my $self = shift;
34 my %args = @_;
35 $self->{override} = !!$args{override};
36 $self->{headers} = HTTP::AnyUA::Util::normalize_headers($args{headers});
37 }
38
39 sub request {
40 my $self = shift;
41 my ($method, $url, $args) = @_;
42
43 if ($self->override) {
44 $args->{headers} = {
45 %{HTTP::AnyUA::Util::normalize_headers($args->{headers})},
46 %{$self->headers},
47 };
48 }
49 else {
50 $args->{headers} = {
51 %{$self->headers},
52 %{HTTP::AnyUA::Util::normalize_headers($args->{headers})},
53 };
54 }
55
56 return $self->backend->request($method, $url, $args);
57 }
58
59 =attr headers
60
61 Get the custom headers.
62
63 =cut
64
65 sub headers { shift->{headers} }
66
67 =attr override
68
69 When true, custom headers overwrite headers in the request. The default is false (the request
70 headers take precedence when defined).
71
72 =cut
73
74 sub override { shift->{override} }
75
76 1;
This page took 0.035051 seconds and 4 git commands to generate.