package Apache2::ASP::HTTPHandler; use strict; use warnings 'all'; BEGIN { use vars '@VARS'; our @VARS = qw( $Request $Response $Server $Application $Session $Form $Config $Stash %modes ); sub VARS { @VARS } } use vars __PACKAGE__->VARS; #============================================================================== sub new { my ($class) = shift; #warn "$class: new: " . caller; return bless { @_ }, $class; }# end new() #============================================================================== sub before_run { 1; } sub after_run { } sub run; #============================================================================== sub init_asp_objects { my ($s, $context) = @_; no strict 'refs'; my $selfclass = ref($s) ? ref($s) : $s; # Get each of this classes' superclasses, and theirs as well, recursively: my %c = map { $_ => 1 } ( grep { $_->isa('Apache2::ASP::HTTPHandler') } ( $selfclass, @{"$selfclass\::ISA"} ) ); map { $c{$_}++ } map { @{"$_\::ISA"} } keys(%c); my @classes = keys(%c); my ( $request, $response, $server, $session, $application, $config, $form, $stash ) = ( $context->request, $context->response, $context->server, $context->session, $context->application, $context->config, $context->request->Form, $context->stash ); foreach my $class ( @classes ) { ${"$class\::Request"} = $request; ${"$class\::Response"} = $response; ${"$class\::Server"} = $server; ${"$class\::Session"} = $session; ${"$class\::Application"} = $application; ${"$class\::Config"} = $config; ${"$class\::Form"} = $form; ${"$class\::Stash"} = $stash; }# end foreach() 1; }# end init_asp_objects() #============================================================================== sub register_mode { my ($s, %info) = @_; $modes{ $info{name} } = $info{handler}; }# end register_mode() #============================================================================== sub modes { my $s = shift; my $key = shift; @_ ? $modes{$key} = shift : $modes{$key}; }# end modes() 1;# return true: =pod =head1 NAME Apache2::ASP::HTTPHandler - base HTTP handler class =head1 SYNOPSIS Internal use only. =head1 DESCRIPTION All *Handlers (FormHandlers, ErrorHandlers, UploadHandlers, etc) are subclasses of this class. HTTPHandler provides the mechanism for inheriting and initializing the ASP objects ($Request, $Response, $Session, $Server, etc) in itself and all of its subclasses, recursively. =head1 PUBLIC METHODS =head2 VARS This shoud be called by every *Handler and MediaManager subclass. Returns a list of strings like this: qw( $Response $Application $Request $Stash $Config $Form $Server $Session ); =head1 BUGS It's possible that some bugs have found their way into this release. Use RT L to submit bug reports. =head1 HOMEPAGE Please visit the Apache2::ASP homepage at L to see examples of Apache2::ASP in action. =head1 AUTHOR John Drago L =head1 COPYRIGHT AND LICENSE Copyright 2007 John Drago, All rights reserved. This software is free software. It may be used and distributed under the same terms as Perl itself. =cut