| package TestAPI::lookup_uri; | 
 |  | 
 | # tests $r->lookup_uri and its work with filters | 
 |  | 
 | use strict; | 
 | use warnings FATAL => 'all'; | 
 |  | 
 | use Apache2::RequestRec (); | 
 | use Apache2::RequestIO (); | 
 | use Apache2::Filter (); | 
 | use Apache2::SubRequest (); | 
 |  | 
 | use Apache2::Const -compile => 'OK'; | 
 |  | 
 | my $uri = '/' . Apache::TestRequest::module2path(__PACKAGE__); | 
 |  | 
 | sub handler { | 
 |     my $r = shift; | 
 |  | 
 |     my $args = $r->args || ''; | 
 |     my %args = map { split '=', $_, 2 } split /;/, $args; | 
 |  | 
 |     if ($args{main}) { | 
 |         $args =~ s/main=1;//; | 
 |         $r->print($args); | 
 |     } | 
 |     else { | 
 |         my $new_args = "$uri?main=1;$args"; | 
 |         my $subr; | 
 |         $args{filter} ||= ''; | 
 |         if ($args{filter} eq 'first') { | 
 |             # run all request filters | 
 |             $subr = $r->lookup_uri($new_args, | 
 |                                    $r->output_filters); | 
 |         } | 
 |         elsif ($args{filter} eq 'second') { | 
 |             # run all request filters, but the top one | 
 |             $subr = $r->lookup_uri($new_args, | 
 |                                    $r->output_filters->next); | 
 |         } | 
 |         elsif ($args{filter} eq 'default') { | 
 |             # run none of request filters | 
 |             $subr = $r->lookup_uri($new_args); | 
 |         } | 
 |         elsif ($args{filter} eq 'none') { | 
 |             # run none of request filters | 
 |             $subr = $r->lookup_uri($new_args, | 
 |                                    $r->proto_output_filters); | 
 |         } | 
 |         else { | 
 |             die "no filter= argument was received"; | 
 |         } | 
 |  | 
 |         $subr->run; | 
 |     } | 
 |  | 
 |     Apache2::Const::OK; | 
 | } | 
 |  | 
 | sub prefix_filter { | 
 |     my $filter = shift; | 
 |  | 
 |     while ($filter->read(my $buffer, 1024)) { | 
 |         $filter->print("pre+$buffer"); | 
 |     } | 
 |  | 
 |     Apache2::Const::OK; | 
 | } | 
 |  | 
 | sub suffix_filter { | 
 |     my $filter = shift; | 
 |  | 
 |     while ($filter->read(my $buffer, 1024)) { | 
 |         $filter->print("$buffer+suf"); | 
 |     } | 
 |  | 
 |     Apache2::Const::OK; | 
 | } | 
 |  | 
 | 1; | 
 | __DATA__ | 
 | PerlModule              TestAPI::lookup_uri | 
 | PerlOutputFilterHandler TestAPI::lookup_uri::prefix_filter | 
 | PerlOutputFilterHandler TestAPI::lookup_uri::suffix_filter |