1 package App::SCS::Plugin::Generate::StaticServer;
3 use Module::Runtime qw(use_module);
6 has dir => (is => 'ro', required => 1);
8 has app => (is => 'ro', required => 1);
10 has _dir_handler => (is => 'lazy');
12 sub _build__dir_handler {
14 use_module('Plack::App::File')->new(
19 has _static_handler => (is => 'lazy', builder => sub {
21 use_module('Plack::App::File')->new(
22 root => $self->app->share_dir->catdir('static')
26 has _ssi_handler => (is => 'lazy', builder => sub {
27 use_module('Plack::Middleware::SSI')->new
30 sub dispatch_request {
32 sub { $self->_ssi_handler },
35 return unless $path =~ s/(?=\/|^)-//;
36 App::SCS::Web::redispatch_to("/static/${path}");
38 sub (/static/...) { $self->_static_handler },
39 sub (/favicon + .ico) { $self->_static_handler },
44 my ($self, $env) = @_;
45 my @args = @{$env->{argv}};
46 my $r = use_module('Plack::Runner')->new(
48 app => $self->app->web->to_psgi_app
50 $r->parse_options(@args);
51 $r->set_options(argv => \@args);