SYNOPSIS

        my $server = MyApp::Server->new();

        $server->run;

        package MyApp::Server;
        use base qw/HTTP::Server::Simple::Mason/;

        sub mason_config {
            return ( comp_root => '/tmp/mason-pages' );
        }

DESCRIPTION

INTERFACE

See HTTP::Server::Simple and the documentation below.

mason_handler

Returns the server's \*(C`HTML::Mason::CGIHandler\*(C' object. The first time this method is called, it creates a new handler by calling \*(C`new_handler\*(C'.

handle_request \s-1CGI\s0

Called with a \s-1CGI\s0 object. Invokes mason and runs the request

handle_error \s-1ERROR\s0

If the call to \*(C`handle_request\*(C' dies, \*(C`handle_error\*(C' is called with the exception (that is, $@). By default, it does nothing; it can be overridden by your subclass.

new_handler

Creates and returns a new \*(C`HTML::Mason::CGIHandler\*(C', with configuration specified by the \*(C`default_mason_config\*(C' and \*(C`mason_config\*(C' methods. You don't need to call this method yourself; \*(C`mason_handler\*(C' will automatically call it the first time it is called.

handler_class

Returns the name of the Mason handler class invoked in \*(C`new_handler\*(C'. Defaults to HTML::Mason::CGIHandler, but in your subclass you may wish to change it to a subclass of HTML::Mason::CGIHandler. Sets up the Mason escapes for the handler $handler. For example, the \*(C`h\*(C' in

<% $name | h %>

By default, sets \*(C`h\*(C' to \*(C`HTTP::Server::Simple::Mason::escape_utf8\*(C' and \*(C`u\*(C' to \*(C`HTTP::Server::Simple::Mason::escape_uri\*(C', but you can override this in your subclass.

mason_config

Returns a subclass-defined mason handler configuration; you almost certainly want to override it and specify at least \*(C`comp_root\*(C'.

default_mason_config

Returns the default mason handler configuration (which can be overridden by entries in \*(C`mason_config\*(C').

escape_utf8 \s-1SCALARREF\s0

does a css-busting but minimalist escaping of whatever html you're passing in.

escape_uri \s-1SCALARREF\s0

Escapes \s-1URI\s0 component according to \s-1RFC2396\s0

CONFIGURATION AND ENVIRONMENT

For most configuration, see HTTP::Server::Simple.

You can (and must) configure your mason \s-1CGI\s0 handler by subclassing this module and overriding the subroutine \*(C`mason_config\*(C'. It's most important that you set a component root (where your pages live) by adding

comp_root => '/some/absolute/path'

See the Synopsis section or \*(C`ex/sample_server.pl\*(C' in the distribution for a complete example.

DEPENDENCIES

HTTP::Server::Simple HTML::Mason

INCOMPATIBILITIES

None reported.

BUGS AND LIMITATIONS

Please report any bugs or feature requests to \*(C`[email protected]\*(C', or through the web interface at <http://rt.cpan.org>.

AUTHOR

Jesse Vincent \*(C`<[email protected]>\*(C'

LICENCE AND COPYRIGHT

Copyright (c) 2001-2005, Jesse Vincent \*(C`<[email protected]>\*(C'. All rights reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

DISCLAIMER OF WARRANTY

\s-1BECAUSE\s0 \s-1THIS\s0 \s-1SOFTWARE\s0 \s-1IS\s0 \s-1LICENSED\s0 \s-1FREE\s0 \s-1OF\s0 \s-1CHARGE\s0, \s-1THERE\s0 \s-1IS\s0 \s-1NO\s0 \s-1WARRANTY\s0 \s-1FOR\s0 \s-1THE\s0 \s-1SOFTWARE\s0, \s-1TO\s0 \s-1THE\s0 \s-1EXTENT\s0 \s-1PERMITTED\s0 \s-1BY\s0 \s-1APPLICABLE\s0 \s-1LAW\s0. \s-1EXCEPT\s0 \s-1WHEN\s0 \s-1OTHERWISE\s0 \s-1STATED\s0 \s-1IN\s0 \s-1WRITING\s0 \s-1THE\s0 \s-1COPYRIGHT\s0 \s-1HOLDERS\s0 \s-1AND/OR\s0 \s-1OTHER\s0 \s-1PARTIES\s0 \s-1PROVIDE\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \*(L"\s-1AS\s0 \s-1IS\s0\*(R" \s-1WITHOUT\s0 \s-1WARRANTY\s0 \s-1OF\s0 \s-1ANY\s0 \s-1KIND\s0, \s-1EITHER\s0 \s-1EXPRESSED\s0 \s-1OR\s0 \s-1IMPLIED\s0, \s-1INCLUDING\s0, \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 \s-1TO\s0, \s-1THE\s0 \s-1IMPLIED\s0 \s-1WARRANTIES\s0 \s-1OF\s0 \s-1MERCHANTABILITY\s0 \s-1AND\s0 \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. \s-1THE\s0 \s-1ENTIRE\s0 \s-1RISK\s0 \s-1AS\s0 \s-1TO\s0 \s-1THE\s0 \s-1QUALITY\s0 \s-1AND\s0 \s-1PERFORMANCE\s0 \s-1OF\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1IS\s0 \s-1WITH\s0 \s-1YOU\s0. \s-1SHOULD\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1PROVE\s0 \s-1DEFECTIVE\s0, \s-1YOU\s0 \s-1ASSUME\s0 \s-1THE\s0 \s-1COST\s0 \s-1OF\s0 \s-1ALL\s0 \s-1NECESSARY\s0 \s-1SERVICING\s0, \s-1REPAIR\s0, \s-1OR\s0 \s-1CORRECTION\s0.

\s-1IN\s0 \s-1NO\s0 \s-1EVENT\s0 \s-1UNLESS\s0 \s-1REQUIRED\s0 \s-1BY\s0 \s-1APPLICABLE\s0 \s-1LAW\s0 \s-1OR\s0 \s-1AGREED\s0 \s-1TO\s0 \s-1IN\s0 \s-1WRITING\s0 \s-1WILL\s0 \s-1ANY\s0 \s-1COPYRIGHT\s0 \s-1HOLDER\s0, \s-1OR\s0 \s-1ANY\s0 \s-1OTHER\s0 \s-1PARTY\s0 \s-1WHO\s0 \s-1MAY\s0 \s-1MODIFY\s0 \s-1AND/OR\s0 \s-1REDISTRIBUTE\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1AS\s0 \s-1PERMITTED\s0 \s-1BY\s0 \s-1THE\s0 \s-1ABOVE\s0 \s-1LICENCE\s0, \s-1BE\s0 \s-1LIABLE\s0 \s-1TO\s0 \s-1YOU\s0 \s-1FOR\s0 \s-1DAMAGES\s0, \s-1INCLUDING\s0 \s-1ANY\s0 \s-1GENERAL\s0, \s-1SPECIAL\s0, \s-1INCIDENTAL\s0, \s-1OR\s0 \s-1CONSEQUENTIAL\s0 \s-1DAMAGES\s0 \s-1ARISING\s0 \s-1OUT\s0 \s-1OF\s0 \s-1THE\s0 \s-1USE\s0 \s-1OR\s0 \s-1INABILITY\s0 \s-1TO\s0 \s-1USE\s0 \s-1THE\s0 \s-1SOFTWARE\s0 (\s-1INCLUDING\s0 \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 \s-1TO\s0 \s-1LOSS\s0 \s-1OF\s0 \s-1DATA\s0 \s-1OR\s0 \s-1DATA\s0 \s-1BEING\s0 \s-1RENDERED\s0 \s-1INACCURATE\s0 \s-1OR\s0 \s-1LOSSES\s0 \s-1SUSTAINED\s0 \s-1BY\s0 \s-1YOU\s0 \s-1OR\s0 \s-1THIRD\s0 \s-1PARTIES\s0 \s-1OR\s0 A \s-1FAILURE\s0 \s-1OF\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1TO\s0 \s-1OPERATE\s0 \s-1WITH\s0 \s-1ANY\s0 \s-1OTHER\s0 \s-1SOFTWARE\s0), \s-1EVEN\s0 \s-1IF\s0 \s-1SUCH\s0 \s-1HOLDER\s0 \s-1OR\s0 \s-1OTHER\s0 \s-1PARTY\s0 \s-1HAS\s0 \s-1BEEN\s0 \s-1ADVISED\s0 \s-1OF\s0 \s-1THE\s0 \s-1POSSIBILITY\s0 \s-1OF\s0 \s-1SUCH\s0 \s-1DAMAGES\s0.