logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

HTTP::Proxy::BodyFilter::simple - A class for creating simple filters

Author

       Philippe "BooK" Bruhat, <book@cpan.org>.

Description

       HTTP::Proxy::BodyFilter::simple can create BodyFilter without going through the hassle of creating a
       full-fledged class. Simply pass a code reference to the filter() method of your filter to the
       constructor, and you'll get the adequate filter.

   Constructorcallingconvention
       The constructor can be called in several ways, which are shown in the synopsis:

       single code reference
           The code reference must conform to the standard filter() signature:

               sub filter {
                   my ( $self, $dataref, $message, $protocol, $buffer ) = @_;
                   ...
               }

           It  is  assumed to be the code for the filter() method.  See HTTP::Proxy::BodyFilter for more details
           about the filter() method.

       name/coderef pairs
           The name is the name of the method ("filter", "begin", "end") and the coderef is the method itself.

           See HTTP::Proxy::BodyFilter for the methods signatures.

License

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

perl v5.40.1                                       2025-02-18               HTTP::Proxy::BodyFilter::simple(3pm)

Methods

       This filter "factory" defines the standard HTTP::Proxy::BodyFilter methods,  but  those  are  only,  erm,
       "proxies" to the actual CODE references passed to the constructor. These "proxy" methods are:

       filter()begin()end()

       Two other methods are actually HTTP::Proxy::BodyFilter::simple methods, and are called automatically:

       init()
           Initialise the filter instance with the code references passed to the constructor.

       can()
           Return  the  actual  code reference that will be run, and not the "proxy" methods. If called with any
           other name than "begin", "end" and "filter", calls UNIVERSAL::can() instead.

       There is also a method that returns a boolean value:

       will_modify()
           The will_modify() method returns a scalar value (boolean) indicating if the  filter  may  modify  the
           body  data.  The default method returns a true value, so you only need to set this value when you are
           absolutelycertain that the filter will not modify data (or at least not modify its final length).

           Here's a simple example:

               $filter = HTTP::Proxy::BodyFilter::simple->new(
                   filter => sub { ${ $_[1] } =~ s/foo/bar/g; },
                   will_modify => 0,    # "foo" is the same length as "bar"
               );

Name

       HTTP::Proxy::BodyFilter::simple - A class for creating simple filters

See Also

       HTTP::Proxy, HTTP::Proxy::BodyFilter.

Synopsis

           use HTTP::Proxy::BodyFilter::simple;

           # a simple s/// filter
           my $filter = HTTP::Proxy::BodyFilter::simple->new(
               sub { ${ $_[1] } =~ s/foo/bar/g; }
           );
           $proxy->push_filter( response => $filter );

See Also