POE::Component::Server::HTTPServer::Handler - request handler interface


POE-Component-Server-HTTPServer documentation Contained in the POE-Component-Server-HTTPServer distribution.

Index


Code Index:

NAME

Top

POE::Component::Server::HTTPServer::Handler - request handler interface

SYNOPSIS

Top

    package MyHandler;
    use base 'POE::Component::Server::HTTPServer::Handler';
    # import H_CONT and H_FINAL:
    use POE::Component::Server::HTTPServer::Handler;

    sub _init {
      my $self = shift;
      my @args = @_;
      # ...
    }

    sub handle {
      my $self = shift;
      my $context = shift;

      if ( $context->{use_myhandler} ) {
        $context->{response}->code(200);
        $context->{response}->content("Boo!");
        return H_FINAL;
      } else {
        return H_CONT;
      }
    }

    1;

DESCRIPTION

Top

This package defines the standard interface for request handlers. You can subclass this package to define custom behavior.

METHODS

Top

$self->handle( $context )

HTTPServer invokes this method on the handler when it determines that the handler should process the request. $context is the request context, which is a hash reference containing data set by the server and by previously executed handlers. Of particular note are the attributes $context->{request} and $context->{response}. See POE::Component::Server::HTTPServer for more details).

handle() should return one of two values (defined in this package, and exported by default): H_FINAL indicates that processing of the request should stop, or H_CONT which indicates that the HTTPServer should continue running handlers.

A request handler will typically either set the headers and content of the response object (and return H_FINAL), or set attributes in the context for later handlers to use (and return H_CONT). A handler may also need to tell the HTTPServer to restart the request dispatching process. The idiom for this is:

    return $context->{dispatcher}->dispatch( $context, "/new/path/to/dispatch/to" );

$self->_init( @args )

This method is called by the constructor with all the arguments passed to new(). If you need to handle arguments passed to the constructor, prefer overriding this method to overriding new().

SEE ALSO

Top

POE::Component::Server::HTTPServer, POE::Component::Server::HTTPServer::NotFoundHandler, POE::Component::Server::HTTPServer::BasicAuthenHandler, POE::Component::Server::HTTPServer::ParameterParseHandler, POE::Component::Server::HTTPServer::StaticHandler

AUTHOR

Top

Greg Fast <gdf@speakeasy.net>

COPYRIGHT

Top


POE-Component-Server-HTTPServer documentation Contained in the POE-Component-Server-HTTPServer distribution.

package POE::Component::Server::HTTPServer::Handler;
use strict;
use Carp;
use base 'Exporter';
our @EXPORT = qw( H_CONT H_FINAL );

use constant H_CONT => 0;
use constant H_FINAL => 1;

sub new {
  my $class = shift;
  my $self = bless {}, $class;
  $self->_init(@_);
  return $self;
}

sub _init { }

sub handle {
  croak "Cannot call handle on unextended package ", __PACKAGE__, "\n";
}

1;
__END__