Mojolicious::Types(3)

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>.