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     -> font/woff
  woff2    -> font/woff2
  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.