/usr/local/CPAN/Apache2-ASP/Apache2/ASP/HTTPContext/HandlerResolver.pm
package Apache2::ASP::HTTPContext::HandlerResolver;
use strict;
use warnings 'all';
my %HandlerCache = ( );
#==============================================================================
sub new
{
my ($class, %args) = @_;
return bless \%args, $class;
}# end new()
#==============================================================================
sub context { Apache2::ASP::HTTPContext->current }
#==============================================================================
sub resolve_request_handler
{
my ($s, $uri) = @_;
($uri) = split /\?/, $uri;
return $HandlerCache{$uri} if $HandlerCache{$uri};
if( $uri =~ m/^\/handlers\// )
{
(my $handler = $uri) =~ s/^\/handlers\///;
$handler =~ s/[^a-z0-9_]/::/gi;
(my $path = "$handler.pm") =~ s/::/\//g;
my $filepath = $s->context->config->web->handler_root . "/$path";
if( -f $filepath )
{
$s->context->_load_class( $handler );
return $HandlerCache{$uri} = $handler;
}
else
{
return;
}# end if()
}
else
{
my $handler = 'Apache2::ASP::ASPHandler';
$s->context->_load_class( $handler );
return $HandlerCache{$uri} = $handler;
}# end if()
}# end resolve_request_handler()
1;# return true: