NAME
Mojolicious::Plugin::DirectoryServer - Serve static files from document root with directory index
SYNOPSIS
# simple usage
use
Mojolicious::Lite;
plugin(
'DirectoryServer'
,
root
=>
"/path/to/htdocs"
)->start;
# with handler
use
Path::Class;
plugin(
'DirectoryServer'
,
root
=>
"/path/to/htdocs"
,
handler
=>
sub
{
my
(
$c
,
$path
) =
@_
;
if
( -f
$path
&&
$path
=~ /\.(md|mkdn)$/ ) {
my
$text
= file(
$path
)->slurp;
my
$html
= markdown( decode_utf8(
$text
) );
$c
->render(
inline
=>
$html
);
}
})->start;
or
> perl -Mojo -E
'a->plugin("DirectoryServer", root => "/path/to/htdocs")->start'
daemon
or
> perl -Miniweb
DESCRIPTION
Mojolicious::Plugin::DirectoryServer is a static file server with a directory index similar to Apache's mod_autoindex.
Methods
Mojolicious::Plugin::DirectoryServer inherits all methods from Mojolicious::Plugin.
Options
Mojolicious::Plugin::DirectoryServer supports the following options.
root
# Mojolicious::Lite
plugin
DirectoryServer
=> {
root
=>
"/path/to/htdocs"
};
Document root directory. Defaults to the current directory.
If root is a file, serve only root file.
auto_index
# Mojolicious::Lite
plugin
DirectoryServer
=> {
auto_index
=> 0 };
Automatically generate index page for directory, default true.
dir_index
# Mojolicious::Lite
plugin
DirectoryServer
=> {
dir_index
=> [
qw/index.html index.htm/
] };
Like a Apache's DirectoryIndex directive.
dir_page
# Mojolicious::Lite
plugin
DirectoryServer
=> {
dir_page
=>
$template_str
};
a HTML template of index page
handler
# Mojolicious::Lite
use
Path::Class;
plugin
DirectoryServer
=> {
handler
=>
sub
{
my
(
$c
,
$path
) =
@_
;
if
(
$path
=~ /\.(md|mkdn)$/) {
my
$text
= file(
$path
)->slurp;
my
$html
= markdown( decode_utf8(
$text
) );
$c
->render(
inline
=>
$html
);
}
}
};
CODEREF for handle a request file.
If not rendered in CODEREF, serve as static file.
json
# Mojolicious::Lite
# /dir (Accept: application/json)
# /dir?_format=json
plugin
DirectoryServer
=> {
json
=> 1 };
Enable json response.
AUTHOR
The original author was hayajo <hayajo@cpan.org>.
The module was forked by brian d foy <bdfoy@cpan.org> after the module was abandoned.
CONTRIBUTORS
Many thanks to the contributors for their work.
SEE ALSO
Plack::App::Directory, iniweb.
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.