.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "HTTP::Proxy::HeaderFilter 3pm" .TH HTTP::Proxy::HeaderFilter 3pm "2017-06-28" "perl v5.20.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" HTTP::Proxy::HeaderFilter \- A base class for HTTP message header filters .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& package MyFilter; \& \& use base qw( HTTP::Proxy::HeaderFilter ); \& \& # changes the User\-Agent header in all requests \& # this filter must be pushed on the request stack \& sub filter { \& my ( $self, $headers, $message ) = @_; \& \& $message\->headers\->header( User_Agent => \*(AqMyFilter/1.0\*(Aq ); \& } \& \& 1; .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" The HTTP::Proxy::HeaderFilter class is used to create filters for \&\s-1HTTP\s0 request/response headers. .SS "Creating a HeaderFilter" .IX Subsection "Creating a HeaderFilter" A HeaderFilter is just a derived class that implements some methods called by the proxy. Of all the methods presented below, only \&\f(CW\*(C`filter()\*(C'\fR \fBmust\fR be defined in the derived class. .IP "\fIfilter()\fR" 4 .IX Item "filter()" The signature of the \f(CW\*(C`filter()\*(C'\fR method is the following: .Sp .Vb 1 \& sub filter { my ( $self, $headers, $message) = @_; ... } .Ve .Sp where \f(CW$self\fR is the filter object, \f(CW$headers\fR is a HTTP::Headers object, and \f(CW$message\fR is either a HTTP::Request or a HTTP::Response object. .Sp The \f(CW$headers\fR HTTP::Headers object is the one that will be sent to the client (if the filter is on the response stack) or origin server (if the filter is on the request stack). If \f(CW$headers\fR is modified by the filter, the modified headers will be sent to the client or server. .Sp The \f(CW\*(C`init()\*(C'\fR method (if it exists) is called by the \f(CW\*(C`new()\*(C'\fR constructeur to perform all initisalisation tasks. It's called once in the filter lifetime. .Sp A HTTP::Proxy::HeaderFilter object is a blessed hash, and the base class reserves only hash keys that start with \f(CW\*(C`_hphf\*(C'\fR. .IP "\fInew()\fR" 4 .IX Item "new()" The constructor is defined for all subclasses. Initialisation tasks (if any) for subclasses should be done in the \f(CW\*(C`init()\*(C'\fR method (see below). .IP "\fIinit()\fR" 4 .IX Item "init()" This method is called by the \f(CW\*(C`new()\*(C'\fR constructeur to perform all initisalisation tasks. It's called once in the filter lifetime. .Sp It receives all the parameters passed to \f(CW\*(C`new()\*(C'\fR. .SS "Standard HeaderFilters" .IX Subsection "Standard HeaderFilters" Standard HTTP::Proxy::HeaderFilter classes are lowercase. .PP The following HeaderFilters are included in the HTTP::Proxy distribution: .IP "simple" 4 .IX Item "simple" This class lets you create a simple header filter from a code reference. .IP "standard" 4 .IX Item "standard" This is the filter that provides standard headers handling for HTTP::Proxy. It is loaded automatically by HTTP::Proxy. .PP Please read each filter's documentation for more details about their use. .SH "USEFUL METHODS FOR SUBCLASSES" .IX Header "USEFUL METHODS FOR SUBCLASSES" Some methods are available to filters, so that they can eventually use the little knowledge they might have of HTTP::Proxy's internals. They mostly are accessors. .IP "\fIproxy()\fR" 4 .IX Item "proxy()" Gets a reference to the HTTP::Proxy objects that owns the filter. This gives access to some of the proxy methods. .SH "AUTHOR" .IX Header "AUTHOR" Philippe \*(L"BooK\*(R" Bruhat, . .SH "SEE ALSO" .IX Header "SEE ALSO" HTTP::Proxy, HTTP::Proxy::BodyFilter. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2003\-2013, Philippe Bruhat. .SH "LICENSE" .IX Header "LICENSE" This module is free software; you can redistribute it or modify it under the same terms as Perl itself.