Sebastian Riedel > Mojolicious-6.17 > Mojolicious::Static

Download:
Mojolicious-6.17.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Source  

NAME ^

Mojolicious::Static - Serve static files

SYNOPSIS ^

  use Mojolicious::Static;

  my $static = Mojolicious::Static->new;
  push @{$static->classes}, 'MyApp::Controller::Foo';
  push @{$static->paths}, '/home/sri/public';

DESCRIPTION ^

Mojolicious::Static is a static file server with Range, If-Modified-Since and If-None-Match support based on RFC 7232 and RFC 7233.

ATTRIBUTES ^

Mojolicious::Static implements the following attributes.

classes

  my $classes = $static->classes;
  $static     = $static->classes(['main']);

Classes to use for finding files in DATA sections with Mojo::Loader, first one has the highest precedence, defaults to main. Only files with exactly one extension will be used, like index.html. Note that these classes need to have already been loaded and added during application startup for files to be detected.

  # Add another class with static files in DATA section
  push @{$static->classes}, 'Mojolicious::Plugin::Fun';

paths

  my $paths = $static->paths;
  $static   = $static->paths(['/home/sri/public']);

Directories to serve static files from, first one has the highest precedence.

  # Add another "public" directory
  push @{$static->paths}, '/home/sri/public';

METHODS ^

Mojolicious::Static inherits all methods from Mojo::Base and implements the following new ones.

dispatch

  my $bool = $static->dispatch(Mojolicious::Controller->new);

Serve static file for Mojolicious::Controller object.

file

  my $asset = $static->file('images/logo.png');
  my $asset = $static->file('../lib/MyApp.pm');

Build Mojo::Asset::File or Mojo::Asset::Memory object for a file, relative to "paths" or from "classes", or return undef if it doesn't exist. Note that this method does not protect from traversing to parent directories.

  my $content = $static->file('foo/bar.html')->slurp;

is_fresh

  my $bool = $static->is_fresh(Mojolicious::Controller->new, {etag => 'abc'});

Check freshness of request by comparing the If-None-Match and If-Modified-Since request headers to the ETag and Last-Modified response headers.

These options are currently available:

etag
  etag => 'abc'

Add ETag header before comparing.

last_modified
  last_modified => $epoch

Add Last-Modified header before comparing.

serve

  my $bool = $static->serve(Mojolicious::Controller->new, 'images/logo.png');
  my $bool = $static->serve(Mojolicious::Controller->new, '../lib/MyApp.pm');

Serve a specific file, relative to "paths" or from "classes". Note that this method does not protect from traversing to parent directories.

serve_asset

  $static->serve_asset(Mojolicious::Controller->new, Mojo::Asset::File->new);

Serve a Mojo::Asset::File or Mojo::Asset::Memory object with Range, If-Modified-Since and If-None-Match support.

SEE ALSO ^

Mojolicious, Mojolicious::Guides, http://mojolicio.us.

syntax highlighting: