NAME
Plack::App::Libarchive - Serve an archive via libarchive as a PSGI web
app
VERSION
version 0.02
SYNOPSIS
use Plack::App::Libarchive;
my $app = Plack::App::Libarchive->new( archive => 'foo.tar.tz' )->to_app;
DESCRIPTION
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>
CONFIGURATION
archive
The relative or absolute path to the archive.
tt
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.
tt_include_path
Array reference of additional Template INCLUDE_PATH directories. This
id useful for writing your own custom template.
SEE ALSO
Archive::Libarchive
Plack
PSGI
AUTHOR
Graham Ollis <plicease@cpan.org>
COPYRIGHT AND LICENSE
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.