NAME

Mojolicious::Types - MIME types

SYNOPSIS

use Mojolicious::Types;

my $types = Mojolicious::Types->new;
$types->type(foo => 'text/foo');
say $types->type('foo');

DESCRIPTION

Mojolicious::Types manages MIME types for Mojolicious.

appcache -> text/cache-manifest
atom     -> application/atom+xml
bin      -> application/octet-stream
css      -> text/css
gif      -> image/gif
gz       -> application/x-gzip
htm      -> text/html
html     -> text/html;charset=UTF-8
ico      -> image/x-icon
jpeg     -> image/jpeg
jpg      -> image/jpeg
js       -> application/javascript
json     -> application/json;charset=UTF-8
mp3      -> audio/mpeg
mp4      -> video/mp4
ogg      -> audio/ogg
ogv      -> video/ogg
pdf      -> application/pdf
png      -> image/png
rss      -> application/rss+xml
svg      -> image/svg+xml
txt      -> text/plain;charset=UTF-8
webm     -> video/webm
woff     -> application/font-woff
xml      -> application/xml,text/xml
zip      -> application/zip

The most common ones are already defined.

ATTRIBUTES

Mojolicious::Types implements the following attributes.

mapping

my $mapping = $types->mapping;
$types      = $types->mapping({png => ['image/png']});

MIME type mapping.

METHODS

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

content_type

$types->content_type(Mojolicious::Controller->new, {ext => 'json'});

Detect MIME type for Mojolicious::Controller object unless a Content-Type response header has already been set, defaults to using the MIME type for the txt extension if no better alternative could be found. Note that this method is EXPERIMENTAL and might change without warning!

These options are currently available:

ext
ext => 'json'

File extension to get MIME type for.

file
file => 'foo/bar.png'

File path to get MIME type for.

detect

my $exts = $types->detect('text/html, application/json;q=9');

Detect file extensions from Accept header value.

# List detected extensions prioritized
say for @{$types->detect('application/json, text/xml;q=0.1', 1)};

file_type

my $type = $types->file_type('foo/bar.png');

Get MIME type for file path. Note that this method is EXPERIMENTAL and might change without warning!

type

my $type = $types->type('png');
$types   = $types->type(png => 'image/png');
$types   = $types->type(json => ['application/json', 'text/x-json']);

Get or set MIME types for file extension, alternatives are only used for detection.

SEE ALSO

Mojolicious, Mojolicious::Guides, https://mojolicious.org.