Provided by: libhttp-proxy-perl_0.304-4_all bug


       HTTP::Proxy::BodyFilter::htmlparser - Filter using HTML::Parser


           use HTTP::Proxy::BodyFilter::htmlparser;

           # $parser is a HTML::Parser object
               mime     => 'text/html',
               response => HTTP::Proxy::BodyFilter::htmlparser->new( $parser );


       The HTTP::Proxy::BodyFilter::htmlparser lets you create a filter based on the HTML::Parser
       object of your choice.

       This filter takes a HTML::Parser object as an argument to its constructor.  The filter is
       either read-only or read-write. A read-only filter will not allow you to change the data
       on the fly. If you request a read-write filter, you'll have to rewrite the response-body

       With a read-write filter, you must recreate the whole body data. This is mainly due to the
       fact that the HTML::Parser has its own buffering system, and that there is no easy way to
       correlate the data that triggered the HTML::Parser event and its original position in the
       chunk sent by the origin server. See below for details.

       Note that a simple filter that modify the HTML text (not the tags) can be created more
       easily with HTTP::Proxy::BodyFilter::htmltext.

   Creating a HTML::Parser that rewrites pages
       A read-write filter is declared by passing "rw => 1" to the constructor:

            HTTP::Proxy::BodyFilter::htmlparser->new( $parser, rw => 1 );

       To be able to modify the body of a message, a filter created with
       HTTP::Proxy::BodyFilter::htmlparser must rewrite it completely. The HTML::Parser object
       can update a special attribute named "output".  To do so, the HTML::Parser handler will
       have to request the "self" attribute (that is to say, require access to the parser itself)
       and update its "output" key.

       The following attributes are added to the HTML::Parser object by this filter:

           A string that will hold the data sent back by the proxy.

           This string will be used as a replacement for the body data only if the filter is
           read-write, that is to say, if it was initialised with "rw => 1".

           Data should always be appended to "$parser->{output}".

           A reference to the HTTP::Message that triggered the filter.

           A reference to the HTTP::Protocol object.


       This filter defines three methods, called automatically:

           The "filter()" method handles all the interactions with the HTML::Parser object.

           Initialise the filter with the HTML::Parser object passed to the constructor.

           This method returns a boolean value that indicates to the system if it will modify the
           data passing through. The value is actually the value of the "rw" parameter passed to
           the constructor.


       HTTP::Proxy, HTTP::Proxy::Bodyfilter, HTTP::Proxy::BodyFilter::htmltext.


       Philippe "BooK" Bruhat, <>.


       Copyright 2003-2015, Philippe Bruhat.


       This module is free software; you can redistribute it or modify it under the same terms as
       Perl itself.