File: Types.pm

package info (click to toggle)
libmojolicious-perl 0.999926-1%2Bsqueeze2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,672 kB
  • ctags: 949
  • sloc: perl: 17,391; makefile: 4
file content (101 lines) | stat: -rw-r--r-- 2,029 bytes parent folder | download
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