File tree 2 files changed +20
-1
lines changed
2 files changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -117,6 +117,14 @@ defmodule MIME do
117
117
"video/x-msvideo" => [ "avi" ]
118
118
}
119
119
120
+ #selected from https://www.iana.org/assignments/media-type-structured-suffix/media-type-structured-suffix.xhtml
121
+ suffixes = % {
122
+ "gzip" => [ "gz" ] ,
123
+ "json" => [ "json" ] ,
124
+ "xml" => [ "xml" ] ,
125
+ "zip" => [ "zip" ]
126
+ }
127
+
120
128
require Application
121
129
custom_types = Application . compile_env ( :mime , :types , % { } )
122
130
@@ -177,7 +185,7 @@ defmodule MIME do
177
185
178
186
defp suffix ( type ) do
179
187
case String . split ( type , "+" ) do
180
- [ _type_subtype_without_suffix , suffix ] -> [ suffix ]
188
+ [ _type_subtype_without_suffix , suffix ] -> suffix_to_ext ( suffix )
181
189
_ -> nil
182
190
end
183
191
end
@@ -265,4 +273,13 @@ defmodule MIME do
265
273
end
266
274
267
275
defp mime_to_ext ( _type ) , do: nil
276
+
277
+ @ spec suffix_to_ext ( String . t ( ) ) :: list ( String . t ( ) ) | nil
278
+ defp suffix_to_ext ( suffix )
279
+
280
+ for { suffix , exts } <- suffixes do
281
+ defp suffix_to_ext ( unquote ( suffix ) ) , do: unquote ( List . wrap ( exts ) )
282
+ end
283
+
284
+ defp suffix_to_ext ( _suffix ) , do: nil
268
285
end
Original file line number Diff line number Diff line change @@ -20,6 +20,8 @@ defmodule MIMETest do
20
20
assert extensions ( "application/xml" ) == [ "xml" ]
21
21
assert extensions ( "application/vnd.custom+xml" ) == [ "xml" ]
22
22
assert extensions ( "application/vnd.custom+xml+xml" ) == [ ]
23
+ assert extensions ( "application/vnd.custom+inexist" ) == [ ]
24
+ assert extensions ( "application/vnd.custom+xml/extrainvalid" ) == [ ]
23
25
end
24
26
25
27
test "type/1" do
You can’t perform that action at this time.
0 commit comments