SYNOPSIS

  use MojoX::MIME::Types;

  # set in Mojolicious as default
  $app->types(MojoX::MIME::Types->new);
  app->types(MojoX::MIME::Types->new);   # ::Lite

  # basic interface translated into pure MIME::Types
  $types->type(foo => 'text/foo');
  say $types->type('foo');

DESCRIPTION

[Added to MIME::Types 2.07] This module is a drop-in replacement for Mojolicious::Types, but with a more correct handling plus a complete list of types... a huge list of types.

Some methods ignore information they receive: those parameters are accepted for compatibility with the Mojolicious::Types interface, but should not contain useful information.

Read the DETAILS below, about how to connect this module into Mojolicious and the differences you get.

DETAILS

Why?

The Mojolicious::Types module has only very little knowledge about what is really needed to treat types correctly, and only contains a tiny list of extensions. MIME::Types tries to follow the standards very closely and contains all types found in various lists on internet.

How to use with Mojolicious

Start your Mojo application like this:

  package MyApp;
  use Mojo::Base 'Mojolicious';

  sub startup {
     my $self = shift;
     ...
     $self->types(MojoX::MIME::Types->new);
  }

If you have special options for MIME::Types::new(), then create your own MIME::Types object first:

  my $mt    = MIME::Types->new(%opts);
  my $types = MojoX::MIME::Types->new(mime_types => $mt);
  $self->types($types);

In any case, you can reach the smart MIME::Types object later as

  my $mt    = $app->types->mimeTypes;
  my $mime  = $mt->mimeTypeOf($filename);

How to use with Mojolicious::Lite

The use in Mojolicious::Lite applications is only slightly different from above:

  app->types(MojoX::MIME::Types->new);
  my $types = app->types;

Differences with Mojolicious::Types

There are a few major difference with Mojolicious::Types: