package Hello::Web;
use strict;
use warnings;
use parent qw/Hello Amon2::Web/;
# load all controller classes
use Module::Find ();
Module::Find::useall("Hello::Web::C");
# custom classes
use Hello::Web::Request;
use Hello::Web::Response;
sub create_request { Hello::Web::Request->new($_[1]) }
sub create_response { shift; Hello::Web::Response->new(@_) }
# dispatcher
use Hello::Web::Dispatcher;
sub dispatch {
return Hello::Web::Dispatcher->dispatch($_[0]) or die "response is not generated";
}
# setup view class
use Tiffany::Text::Xslate;
{
my $view_conf = __PACKAGE__->config->{'Text::Xslate'} || die "missing configuration for Text::Xslate";
my $view = Tiffany::Text::Xslate->new(+{
'syntax' => 'TTerse',
'module' => [ 'Text::Xslate::Bridge::Star' ],
'function' => {
c => sub { Amon2->context() },
uri_with => sub { Amon2->context()->req->uri_with(@_) },
uri_for => sub { Amon2->context()->uri_for(@_) },
},
%$view_conf
});
sub create_view { $view }
}
# load plugins
# __PACKAGE__->load_plugins('Web::FillInFormLite');
# __PACKAGE__->load_plugins('Web::NoCache');
1;