NAME

Apache2::DirBasedHandler - Directory based Location Handler helper

SYNOPSIS

package My::Thingy

use strict
use Apache2::DirBasedHandler
our @ISA = qw(Apache2::DirBasedHandler);
use Apache2::Const -compile => qw(:common);

sub index {
    my $self = shift;
    my ($r,$uri_args,$args) = @_;

    if (@$uri_args) {
        return Apache2::Const::NOT_FOUND;
    }

    return (
        Apache2::Const::OK,
        qq[this is the index],
        qq[text/plain; charset=utf-8]
    );
}

sub super_page {
    my $self = shift;
    my ($r,$uri_args,$args) = @_;

    return (
        Apache2::Const::OK,
        qq[this is $location/super and all it's contents],
        qq[text/plain; charset=utf-8]
    );
}

sub super_dooper_page {
    my $self = shift;
    my ($r,$uri_args,$args) = @_;

    return (
        Apache2::Const::OK,
        qq[this is $location/super/dooper and all it's contents],
        qq[text/plain; charset=utf-8]
    );
}

1;

DESCRIPTION

This module is designed to allow people to more quickly implement uri to function style handlers. This module is intended to be subclassed.

A request for

$r->location . qq[/foo/bar/baz/]

will be served by the first of the following functions with is defined

foo_bar_baz_page
foo_bar_page
foo_page
index

handler

handler is the guts of DirBasedHandler. It provides the basic structure of the modules, turning the request uri into an array, which is then turned into possible function calls.

init

init is used to include objects or data you want to be passed into your page functions. To be most useful it should return a hash reference. The default implementation returns a reference to an empty hash.

parse_uri

parse_uri takes an Apache::RequestRec (or derived) object, and returns a reference to an array of all the non-slash parts of the uri. It strips repeated slashes in the same manner that they would be stripped if you do a request for static content.

uri_to_function

uri_to_function converts an Apache2::RequestRec (or derived) object and an array reference and returns and returns the name of a function to handle the request it's arguments describe.

index

index handles requests for $r->location, and any requests that have no other functions defined to handle them. You must subclass it (or look silly)