You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Alexandre Dulaunoy <ad...@foo.be> on 2002/07/17 12:15:41 UTC
mod_perl 2.0 api and extending method in Apache
Hello,
I have look around the documentation of mod_perl 2.0 and I'm looking if
it's possible with the current mod_perl API to add a method (like GET,
HEAD) in apache to extend the functionnaly of the HTTP server ?
There is also some possibility with the new framework to add new protocol
(like the echo example in the mod_perl doc). But I just want to extend
existing (or add new) method... Is it possible ?
Thanks.
adulau
Re: mod_perl 2.0 api and extending method in Apache
Posted by Stas Bekman <st...@stason.org>.
Alexandre Dulaunoy wrote:
> Hello,
>
> I have look around the documentation of mod_perl 2.0 and I'm looking if
> it's possible with the current mod_perl API to add a method (like GET,
> HEAD) in apache to extend the functionnaly of the HTTP server ?
>
> There is also some possibility with the new framework to add new protocol
> (like the echo example in the mod_perl doc). But I just want to extend
> existing (or add new) method... Is it possible ?
I'm not sure what you mean by extending, but look at mod_dav which
extends the HTTP protocol: modules/dav/main/mod_dav.c (inside the
httpd-2.0 repository).
In mod_perl 2.0 you can support new request methods, by simply
registering them. e.g. let's support the method 'TNT' in the response
handler:
<Location /extend>
SetHandler perl-script
PerlResponseHandler Apache::Extend
</Location>
package Apache::Extend;
use strict;
use warnings;
use Apache::RequestRec ();
use Apache::RequestIO ();
use Apache::RequestUtil ();
use Apache::Const -compile => 'OK';
use constant METHNAME => 'TNT';
sub handler {
my $r = shift;
$r->content_type('text/plain');
Apache::method_register($r->pool, METHNAME);
print "Called with Method: " . $r->method;
Apache::OK;
}
1;
Now, let's call:
perl -le 'require LWP::UserAgent; print
LWP::UserAgent->new->request(HTTP::Request->new("GET",
"http://localhost:8002/extend/"))->content;'
Called with Method: GET
__________________________________________________________________
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org http://ticketmaster.com