NAME

Catalyst::Plugin::Static::File - Serve a specific static file

VERSION

version v0.1.5

SYNOPSIS

In your Catalyst class:

use Catalyst qw/
    Static::File
  /;

In a controller method:

$c->serve_static_file( $absolute_path, $type );

DESCRIPTION

This plugin provides a simple method for your Catalyst app to send a specific static file.

Unlike Catalyst::Plugin::Static::Simple,

  • It only supports serving a single file, not a directory of static files. Use Plack::Middleware::Static if you want to serve multiple files.

  • It assumes that you know what you're doing. If the file does not exist, it will throw an fatal error.

  • It uses Plack::MIME to identify the content type, but you can override that.

  • It adds a file path to the file handle, plays nicely with Plack::Middleware::XSendfile and Plack::Middleware::ETag.

  • It does not log anything.

METHODS

serve_static_file

$c->serve_static_file( $absolute_path, $type );

This serves the file in $absolute_path, with the $type content type.

If the $type is omitted, it will guess the type using the filename.

It will also set the Last-Modified and Content-Length headers.

It returns a true value on success.

If you want to use conditional requests, use Plack::Middleware::ConditionalGET.

SUPPORT FOR OLDER PERL VERSIONS

This module requires Perl v5.14 or later.

Future releases may only support Perl versions released in the last ten years.

SEE ALSO

Catalyst

Catalyst::Plugin::Static::Simple

SOURCE

The development version is on github at https://github.com/robrwo/Catalyst-Plugin-Static-File and may be cloned from git://github.com/robrwo/Catalyst-Plugin-Static-File.git

BUGS

Please report any bugs or feature requests on the bugtracker website https://github.com/robrwo/Catalyst-Plugin-Static-File/issues

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

AUTHOR

Robert Rothenberg <rrwo@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2023 by Robert Rothenberg.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)