HTTP::Proxy::BodyFilter::lines - A filter that outputs only complete lines
use HTTP::Proxy::BodyFilter::lines; use MyFilter; # this filter only works on complete lines my $filter = MyFilter->new(); # stack both filters so that they'll handle text/* responses $proxy->push_filter( mime => 'text/*', response => HTTP::Proxy::BodyFilter::lines->new, response => $filter ); # I want my lines to end with '!' # This is equivalent to $/ = '!' in a normal Perl program my $lines = HTTP::Proxy::BodyFilter::lines->new('!');
The HTTP::Proxy::BodyFilter::lines filter makes sure that the next filter in the filter chain will only receive complete lines. The "chunks" of data received by the following filters with either end with
\n or will be the last piece of data for the current HTTP message body.
You can change the idea the filter has of what is a line by passing to its constructor the string it should understand as line ending.
\n is the default value.
my $filter = HTTP::Proxy::BodyFilter::lines->new( $sep );
This is similar to modifying
$/ in a Perl program. In fact, this filter has a behaviour so similar to modifying $/ that it also knows about "paragraph mode" and "record mode".
Note that the "slurp" mode is not supported. Please use HTTP::Proxy::BodyFilter::complete to enable the generic store and forward filter mechanism.
This filter defines the following methods, which are automatically called:
Initialise the filter with the EOL information.
Keeps unfinished lines for later.
This method returns a false value, thus indicating to the system that it will not modify data passing through.
Philippe "BooK" Bruhat, <email@example.com>.
Copyright 2003-2013, Philippe Bruhat.
This module is free software; you can redistribute it or modify it under the same terms as Perl itself.