Plack::App::Libarchive - Serve an archive via libarchive as a PSGI web app
version 0.02
use Plack::App::Libarchive; my $app = Plack::App::Libarchive->new( archive => 'foo.tar.tz' )->to_app;
This PSGI application serves the content of an archive (any format supported by libarchive
via Archive::Libarchive). A request to the root for the app will return an index of the files contained within the archive.
The index is generated using Template. There is a bundled template that will list the entry files and link to their content. If you want to customize the index you can provide your own template. Here are the template variables that are available from within the template:
archive
A hash reference containing information about the archive
archive.name
The basename of the archive filename. For example: foo.tar.gz
.
archive.get_next_entry
Get the next Archive::Libarchive::Entry object from the archive.
Here is the default wrapper.html.tt:
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>[% archive.name %]</title> </head> <body> [% content %] </body> </html>
and the default archive_index.html.tt
<ul> [% WHILE (entry = archive.get_next_entry) %] <li><a href="[% entry.pathname | uri %]">[% entry.pathname | html %]</a></li> [% END %] </ul>
The relative or absolute path to the archive.
Instance of Template that will be used to generate the html index. The default is:
Template->new( WRAPPER => 'wrapper.html.tt', INCLUDE_PATH => File::ShareDir::Dist::dist_share('Plack-App-Libarchive'), DELIMITER => ':', render_die => 1, TEMPLATE_EXTENSION => '.tt', ENCODING => 'utf8', )
On MSWin32
a delimiter of ;
is used instead.
Array reference of additional Template INCLUDE_PATH directories. This id useful for writing your own custom template.
Graham Ollis <plicease@cpan.org>
This software is copyright (c) 2022 by Graham Ollis.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.