blob: 2d85f6de9770df22ee4b4de5dcb92d51cedf2a0c [file] [log] [blame]
# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::push_handlers;
# test various ways to push handlers
use strict;
use warnings FATAL => 'all';
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::RequestUtil ();
use Apache2::Const -compile => qw(OK DECLINED DONE);
sub handler {
my $r = shift;
$r->handler("modperl");
$r->push_handlers(PerlResponseHandler => \&coderef);
$r->push_handlers(PerlResponseHandler =>
\&TestHooks::push_handlers::full_coderef);
$r->push_handlers(PerlResponseHandler =>
[\&coderef1, __PACKAGE__.'::coderef2', \&coderef3]);
$r->push_handlers(PerlResponseHandler =>
sub { return say(shift, "anonymous") });
$r->push_handlers(PerlResponseHandler =>
[sub { return say(shift, "anonymous1") },
\&coderef4,
sub { return say(shift, "anonymous3") },
]);
$r->push_handlers(PerlResponseHandler => \&end);
return Apache2::Const::DECLINED;
}
sub end { return Apache2::Const::DONE }
sub say { shift->print(shift,"\n"); return Apache2::Const::DECLINED }
sub conf {
# this one is configured from httpd.conf
my $r= shift;
$r->content_type('text/plain');
return say($r, "conf");
}
sub conf1 { return say(shift, "conf1") }
sub conf2 { return say(shift, "conf2") }
sub coderef { return say(shift, "coderef") }
sub coderef1 { return say(shift, "coderef1") }
sub coderef2 { return say(shift, "coderef2") }
sub coderef3 { return say(shift, "coderef3") }
sub coderef4 { return say(shift, "coderef4") }
sub full_coderef { return say(shift, "full_coderef") }
1;
__DATA__
<NoAutoConfig>
<Location /TestHooks__push_handlers>
SetHandler modperl
PerlHeaderParserHandler TestHooks::push_handlers
PerlResponseHandler TestHooks::push_handlers::conf
PerlResponseHandler TestHooks::push_handlers::conf1 TestHooks::push_handlers::conf2
</Location>
</NoAutoConfig>