1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
# Copyright (C) 2008-2010, Sebastian Riedel.
package MojoX::Types;
use strict;
use warnings;
use base 'Mojo::Base';
__PACKAGE__->attr(
types => sub {
return {
atom => 'application/atom+xml',
bin => 'application/octet-stream',
css => 'text/css',
gif => 'image/gif',
gz => 'application/gzip',
htm => 'text/html',
html => 'text/html',
ico => 'image/x-icon',
jpeg => 'image/jpeg',
jpg => 'image/jpeg',
js => 'application/x-javascript',
json => 'application/json',
mp3 => 'audio/mpeg',
png => 'image/png',
rss => 'application/rss+xml',
svg => 'image/svg+xml',
tar => 'application/x-tar',
txt => 'text/plain',
xml => 'text/xml',
zip => 'application/zip'
};
}
);
# Magic. Got it.
sub type {
my ($self, $ext, $type) = @_;
# Set
if ($type) {
$self->types->{$ext} = $type;
return $self;
}
return $self->types->{$ext || ''};
}
1;
__END__
=head1 NAME
MojoX::Types - MIME Types
=head1 SYNOPSIS
use MojoX::Types;
# New type list
my $types = MojoX::Types->new;
# Get MIME type for ".png"
my $type = $types->type('png');
# Add MIME type for ".foo"
$types->type(foo => 'mojo/foo');
=head1 DESCRIPTION
L<MojoX::Types> is a container for MIME types.
=head1 ATTRIBUTES
L<MojoX::Types> implements the following attributes.
=head2 C<types>
my $map = $types->types;
$types = $types->types({png => 'image/png'});
List of MIME types.
=head1 METHODS
L<MojoX::Types> inherits all methods from L<Mojo::Base> and implements the
following ones.
=head2 C<type>
my $type = $types->type('png');
$types = $types->type(png => 'image/png');
Get or set MIME type for file extension.
=head1 SEE ALSO
L<Mojolicious>, L<Mojolicious::Guides>, L<http://mojolicious.org>.
=cut
|