John Drago > Apache2-ASP-1.54 > Apache2::ASP::Base

Download:
Apache2-ASP-1.54.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  1
View Bugs
Report a bug
Source   Latest Release: Apache2-ASP-1.59

NAME ^

Apache2::ASP::Base - Base class for ASP engines

SYNOPSIS ^

  package MyASP;
  
  use strict;
  use base 'Apache2::ASP::Base';
  
  # Use whatever Apache2::* and APR::* modules are necessary:
  
  sub handler : method
  {
    my ($class, $r) = @_;
    
    # We function best as an object:
    my $s = $class->SUPER::new( $ENV{APACHE2_ASP_CONFIG} );
    
    # What Apache2::ASP::Handler is going to handle this request?
    my $handler_class = $s->resolve_request_handler( $r->uri );
    if( $handler_class->isa('Apache2::ASP::UploadHandler') )
    {
      # We use the upload_hook functionality from Apache::Request
      # to process uploads:
      my $upload_hook = sub {
        my ($upload, $data) = @_;
        # Handle upload hook here...
      };
      $s->{q} = Apache2::ASP::CGI->new( $r, $upload_hook );
    }
    else
    {
      # Not an upload - normal CGI functionality will work fine:
      $s->{q} = Apache2::ASP::CGI->new( $r );
    }# end if()
    
    # Get our subref and execute it:
    my $handler = $s->setup_request( $r, $s->{q} );
    my $status = eval { $handler->( ) };
    if( $@ )
    {
      warn "ERROR AFTER CALLING \$handler->( ): $@";
      return $s->_handle_error( $@ );
    }# end if()
    
    # 0 = OK, everything else means errors of some kind:
    return $status;
  }# end handler()
  
  sub _handle_error
  {
    my ($s, $err) = @_;
    
    war $err;
    $s->response->Clear();
    $s->global_asa->can('Script_OnError')->( $err );
    
    return 500;
  }# end _handle_error()

DESCRIPTION ^

METHODS ^

new( $config )

Returns a new Apache2::ASP::Base object using the Apache2::ASP::Config object passed in as $config.

setup_request( $r )

Creates a new request instance, based on the information about the request gleaned from $r - an Apache2::RequestRec object (or something that behaves like one anyway).

Returns a subroutine reference.

Execute like:

  my $ref = $asp->setup_request( $r );
  
  # A normal request:
  $ref->( 0 );
  # or
  $ref->( );
  
  # A subrequest (i.e. as in the case of an include):
  $ref->( 1 );

config( )

Returns the current Apache2::ASP::Config object.

r( )

Returns the Apache2::RequestRec object.

q( )

Returns the Apache2::ASP::CGI object.

session( )

Returns the current Apache2::ASP::SessionStateManager object.

request( )

Returns the current Apache2::ASP::Request object.

response( )

Returns the current Apache2::ASP::Response object.

server( )

Returns the current Apache2::ASP::Server object.

application( )

Returns the current Apache2::ASP::Application object.

global_asa( )

Returns the Apache2::ASP::GlobalASA object.

resolve_request_handler( $uri )

Returns the classname of the Apache2::ASP::Handler subclass that will process the current HTTP request.

BUGS ^

It's possible that some bugs have found their way into this release.

Use RT http://rt.cpan.org/NoAuth/Bugs.html?Dist=Apache2-ASP to submit bug reports.

HOMEPAGE ^

Please visit the Apache2::ASP homepage at http://www.devstack.com/ to see examples of Apache2::ASP in action.

AUTHOR ^

John Drago mailto:jdrago_999@yahoo.com

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.