Some changes for mime handling

- added additional formats
- added get function
- added tests
This commit is contained in:
Ziver Koc 2018-11-03 20:33:07 +01:00
parent 119fc82267
commit 0ba153b118
3 changed files with 72 additions and 12 deletions

View file

@ -28,10 +28,7 @@ import zutil.io.file.FileUtil;
import zutil.parser.DataNode;
import zutil.parser.json.JSONParser;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.*;
import java.lang.reflect.Array;
import java.util.*;
@ -40,7 +37,12 @@ import java.util.*;
*/
public class MimeTypeUtil {
// Define mime types
// Static variables
private static final ArrayList<MimeType> mimes = new ArrayList<MimeType>();
private static final HashMap<String, MimeType> mimesByExtenion = new HashMap<>();
// Initialize mime types
static {
try {
readMimeFile("zutil/data/mime.json");
@ -49,14 +51,8 @@ public class MimeTypeUtil {
}
}
// Static variables
private static final ArrayList<MimeType> mimes = new ArrayList<MimeType>();
private static void readMimeFile(String path) throws IOException {
BufferedReader in = new BufferedReader(new FileReader(FileUtil.find(path)));
DataNode json = new JSONParser(in).read();
DataNode json = JSONParser.read(FileUtil.getContent(path));
for (Iterator<String> it = json.keyIterator(); it.hasNext(); ) {
String primaryType = it.next();
@ -76,9 +72,17 @@ public class MimeTypeUtil {
private static void addMimeType(MimeType mime){
mimes.add(mime);
for (String extension : mime.getExtensions()) {
mimesByExtenion.put(extension, mime);
}
}
public static MimeType getMimeByExtension(String extension) {
return mimesByExtenion.get(extension);
}
public static class MimeType{
private final String primaryType;
@ -101,6 +105,14 @@ public class MimeTypeUtil {
return subType;
}
public String getDescription() {
return description;
}
public String[] getExtensions() {
return extensions;
}
public String toString() {
return primaryType + "/" + subType;
}

View file

@ -162,10 +162,18 @@
}
},
"video": {
"x-matroska": {
"description": "Matroska Multimedia Container",
"extensions": ["mkv"]
},
"x-msvideo": {
"description": "AVI: Audio Video Interleave",
"extensions": ["avi"]
},
"mp4": {
"description": "MPEG-4 Video",
"extensions": ["mp4"]
},
"mpeg": {
"description": "MPEG Video",
"extensions": ["mpeg"]