MojoX::MIME::Types(3pm) | User Contributed Perl Documentation | MojoX::MIME::Types(3pm) |
MojoX::MIME::Types - MIME Types for Mojolicious
MojoX::MIME::Types is a Mojo::Base
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');
[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.
-Option --Default mime_types <created internally> types undef
example:
$app->types(MojoX::MIME::Types->new); # when you need to pass options to MIME::Types->new my $mt = MIME::Types->new(%opts); my $types = MojoX::MIME::Types->new(mime_types => $mt); $app->types($types);
Avoid this method! The returned HASH is expensive to construct, changes passed via %table are ignored: MIME::Types is very complete!
This detect() function is not the correct approach for the Accept header: the "Accept" may contain wildcards ('*') in types for globbing, which does not produce extensions. Better use MIME::Types::httpAcceptBest() or MIME::Types::httpAcceptSelect().
example:
my $exts = $types->detect('application/json;q=9'); my $exts = $types->detect('text/html, application/json;q=9');
When a single $type or an ARRAY of @types are specified, the $self object is returned. Nothing is done with the provided info.
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.
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);
The use in Mojolicious::Lite applications is only slightly different from above:
app->types(MojoX::MIME::Types->new); my $types = app->types;
There are a few major difference with Mojolicious::Types:
This module is part of MIME-Types distribution version 2.24, built on December 28, 2022. Website: http://perl.overmeer.net/CPAN/
Copyrights 1999-2022 by [Mark Overmeer <markov@cpan.org>]. For other contributors see ChangeLog.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://dev.perl.org/licenses/
2022-12-30 | perl v5.36.0 |