]>
Commit | Line | Data |
---|---|---|
e29ebc7c DC |
1 | package PMG::API2::MimeTypes; |
2 | ||
3 | use strict; | |
4 | use warnings; | |
5 | ||
6 | use PVE::RESTHandler; | |
7 | ||
8 | use base qw(PVE::RESTHandler); | |
9 | ||
10 | my $mime = []; | |
11 | ||
12 | my $load_mime_types = sub { | |
13 | my $mtypes = { | |
14 | 'message/delivery-status' => undef, | |
15 | 'message/disposition-notification' => undef, | |
16 | 'message/external-body' => undef, | |
17 | 'message/news' => undef, | |
18 | 'message/partial' => undef, | |
19 | 'message/rfc822' => undef, | |
20 | 'multipart/alternative' => undef, | |
21 | 'multipart/digest' => undef, | |
22 | 'multipart/encrypted' => undef, | |
23 | 'multipart/mixed' => undef, | |
24 | 'multipart/related' => undef, | |
25 | 'multipart/report' => undef, | |
26 | 'multipart/signed' => undef, | |
27 | }; | |
28 | ||
29 | # get mimetypes out of /usr/share/mime/globs | |
30 | ||
31 | open(DAT, "/usr/share/mime/globs") || | |
32 | die ("Could not open file $!: ERROR"); | |
33 | ||
34 | while (my $row = <DAT>) { | |
35 | next if $row =~ m/^\#/; | |
36 | ||
37 | if ($row =~ m/([A-Za-z0-9-_\.]*)\/([A-Za-z0-9-_\+\.]*):\*\.(\S{1,10})\s*$/) { | |
38 | ||
39 | my $m = "$1/$2"; | |
40 | my $end = $3; | |
41 | ||
42 | $m =~ s/\./\\\./g; # quote '.' | |
43 | $m =~ s/\+/\\\+/g; # quote '+' | |
44 | ||
45 | if (defined ($end)) { | |
46 | $mtypes->{"$m"} = $mtypes->{"$m"} ? $mtypes->{"$m"} . ",$end" : $end; | |
47 | } | |
48 | } | |
49 | } | |
50 | close(DAT); | |
51 | ||
52 | # sort and add wildcard entries | |
53 | my $lasttype=''; | |
54 | ||
55 | foreach my $mt (sort (keys %$mtypes)) { | |
56 | my ($type, $subtype) = split ('/', $mt); | |
57 | ||
58 | if ($type ne $lasttype) { | |
59 | push (@$mime, { mimetype => "$type/.*", text => "$type/.*"}); | |
60 | $lasttype = $type; | |
61 | } | |
62 | ||
63 | my $text = $mtypes->{$mt} ? "$mt ($mtypes->{$mt})" : $mt; | |
64 | ||
65 | push (@$mime, { mimetype => $mt, text => $text }); | |
66 | } | |
67 | }; | |
68 | ||
69 | $load_mime_types->(); | |
70 | ||
71 | __PACKAGE__->register_method ({ | |
72 | name => 'index', | |
73 | path => '', | |
74 | method => 'GET', | |
75 | description => "Get Mime Types List", | |
76 | parameters => { | |
77 | additionalProperties => 0, | |
78 | }, | |
79 | returns => { | |
80 | type => 'array', | |
81 | items => { | |
82 | type => "object", | |
83 | properties => { | |
84 | mimetype => { type => 'string'}, | |
85 | text => { type => 'string' }, | |
86 | }, | |
87 | }, | |
88 | }, | |
89 | code => sub { | |
90 | my ($param) = @_; | |
91 | ||
92 | return $mime; | |
93 | }}); | |
94 | ||
95 | 1; |