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 Text::Markdown qw{ markdown };
use Path::Class;
use Encode qw{ decode_utf8 };
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 Text::Markdown qw{ markdown };
    use Path::Class;
    use Encode qw{ decode_utf8 };
    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.

ChinaXing

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.