use Mojolicious::Types; my $types = Mojolicious::Types->new; $types->type(foo => 'text/foo'); say $types->type('foo');
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 -> font/woff woff2 -> font/woff2 xml -> application/xml,text/xml zip -> application/zip
The most common ones are already defined.
my $mapping = $types->mapping; $types = $types->mapping({png => ['image/png']});
$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 => 'json'
File extension to get MIME type for.
file => 'foo/bar.png'
File path to get MIME type for.
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)};
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!
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.