aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Net/MimeTypes.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model/Net/MimeTypes.cs')
-rw-r--r--MediaBrowser.Model/Net/MimeTypes.cs154
1 files changed, 96 insertions, 58 deletions
diff --git a/MediaBrowser.Model/Net/MimeTypes.cs b/MediaBrowser.Model/Net/MimeTypes.cs
index 56cfff733..efa5a5217 100644
--- a/MediaBrowser.Model/Net/MimeTypes.cs
+++ b/MediaBrowser.Model/Net/MimeTypes.cs
@@ -1,4 +1,5 @@
-using System;
+using MediaBrowser.Model.Extensions;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -45,33 +46,50 @@ namespace MediaBrowser.Model.Net
".rec"
};
- private static readonly Dictionary<string, string> VideoFileExtensionsDictionary = VideoFileExtensions.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase);
+ private static Dictionary<string, string> GetVideoFileExtensionsDictionary()
+ {
+ Dictionary<string, string> dict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+
+ foreach (string ext in VideoFileExtensions)
+ {
+ dict[ext] = ext;
+ }
+
+ return dict;
+ }
+
+ private static readonly Dictionary<string, string> VideoFileExtensionsDictionary = GetVideoFileExtensionsDictionary();
// http://en.wikipedia.org/wiki/Internet_media_type
// Add more as needed
- private static readonly Dictionary<string, string> MimeTypeLookup =
- new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
- {
- {".jpg", "image/jpeg"},
- {".jpeg", "image/jpeg"},
- {".tbn", "image/jpeg"},
- {".png", "image/png"},
- {".gif", "image/gif"},
- {".webp", "image/webp"},
- {".ico", "image/vnd.microsoft.icon"},
- {".mpg", "video/mpeg"},
- {".mpeg", "video/mpeg"},
- {".ogv", "video/ogg"},
- {".mov", "video/quicktime"},
- {".webm", "video/webm"},
- {".mkv", "video/x-matroska"},
- {".wmv", "video/x-ms-wmv"},
- {".flv", "video/x-flv"},
- {".avi", "video/x-msvideo"},
- {".asf", "video/x-ms-asf"},
- {".m4v", "video/x-m4v"}
- };
+ private static Dictionary<string, string> GetMimeTypeLookup()
+ {
+ Dictionary<string, string> dict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+
+ dict.Add(".jpg", "image/jpeg");
+ dict.Add(".jpeg", "image/jpeg");
+ dict.Add(".tbn", "image/jpeg");
+ dict.Add(".png", "image/png");
+ dict.Add(".gif", "image/gif");
+ dict.Add(".webp", "image/webp");
+ dict.Add(".ico", "image/vnd.microsoft.icon");
+ dict.Add(".mpg", "video/mpeg");
+ dict.Add(".mpeg", "video/mpeg");
+ dict.Add(".ogv", "video/ogg");
+ dict.Add(".mov", "video/quicktime");
+ dict.Add(".webm", "video/webm");
+ dict.Add(".mkv", "video/x-matroska");
+ dict.Add(".wmv", "video/x-ms-wmv");
+ dict.Add(".flv", "video/x-flv");
+ dict.Add(".avi", "video/x-msvideo");
+ dict.Add(".asf", "video/x-ms-asf");
+ dict.Add(".m4v", "video/x-m4v");
+
+ return dict;
+ }
+
+ private static readonly Dictionary<string, string> MimeTypeLookup = GetMimeTypeLookup();
private static readonly Dictionary<string, string> ExtensionLookup = CreateExtensionLookup();
@@ -109,19 +127,19 @@ namespace MediaBrowser.Model.Net
}
// Type video
- if (ext.Equals(".3gp", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".3gp"))
{
return "video/3gpp";
}
- if (ext.Equals(".3g2", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".3g2"))
{
return "video/3gpp2";
}
- if (ext.Equals(".ts", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".ts"))
{
return "video/mp2t";
}
- if (ext.Equals(".mpd", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".mpd"))
{
return "video/vnd.mpeg.dash.mpd";
}
@@ -133,134 +151,154 @@ namespace MediaBrowser.Model.Net
}
// Type text
- if (ext.Equals(".css", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".css"))
{
return "text/css";
}
- if (ext.Equals(".csv", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".csv"))
{
return "text/csv";
}
- if (ext.Equals(".html", StringComparison.OrdinalIgnoreCase) || ext.Equals(".htm", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".html"))
+ {
+ return "text/html; charset=UTF-8";
+ }
+ if (StringHelper.EqualsIgnoreCase(ext, ".htm"))
{
return "text/html; charset=UTF-8";
}
- if (ext.Equals(".txt", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".txt"))
{
return "text/plain";
}
- if (ext.Equals(".xml", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".xml"))
{
return "application/xml";
}
// Type document
- if (ext.Equals(".pdf", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".pdf"))
{
return "application/pdf";
}
- if (ext.Equals(".mobi", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".mobi"))
{
return "application/x-mobipocket-ebook";
}
- if (ext.Equals(".epub", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".epub"))
+ {
+ return "application/epub+zip";
+ }
+ if (StringHelper.EqualsIgnoreCase(ext, ".cbz"))
{
return "application/epub+zip";
}
- if (ext.Equals(".cbz", StringComparison.OrdinalIgnoreCase) || ext.Equals(".cbr", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".cbr"))
{
- return "application/x-cdisplay";
+ return "application/epub+zip";
}
// Type audio
- if (ext.Equals(".mp3", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".mp3"))
{
return "audio/mpeg";
}
- if (ext.Equals(".m4a", StringComparison.OrdinalIgnoreCase) || ext.Equals(".aac", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".m4a"))
{
return "audio/mp4";
}
- if (ext.Equals(".webma", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".aac"))
+ {
+ return "audio/mp4";
+ }
+ if (StringHelper.EqualsIgnoreCase(ext, ".webma"))
{
return "audio/webm";
}
- if (ext.Equals(".wav", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".wav"))
{
return "audio/wav";
}
- if (ext.Equals(".wma", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".wma"))
{
return "audio/x-ms-wma";
}
- if (ext.Equals(".flac", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".flac"))
{
return "audio/flac";
}
- if (ext.Equals(".aac", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".aac"))
{
return "audio/x-aac";
}
- if (ext.Equals(".ogg", StringComparison.OrdinalIgnoreCase) || ext.Equals(".oga", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".ogg"))
+ {
+ return "audio/ogg";
+ }
+ if (StringHelper.EqualsIgnoreCase(ext, ".oga"))
{
return "audio/ogg";
}
// Playlists
- if (ext.Equals(".m3u8", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".m3u8"))
{
return "application/x-mpegURL";
}
// Misc
- if (ext.Equals(".dll", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".dll"))
{
return "application/octet-stream";
}
// Web
- if (ext.Equals(".js", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".js"))
{
return "application/x-javascript";
}
- if (ext.Equals(".json", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".json"))
{
return "application/json";
}
- if (ext.Equals(".map", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".map"))
{
return "application/x-javascript";
}
- if (ext.Equals(".woff", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".woff"))
{
return "font/woff";
}
- if (ext.Equals(".ttf", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".ttf"))
{
return "font/ttf";
}
- if (ext.Equals(".eot", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".eot"))
{
return "application/vnd.ms-fontobject";
}
- if (ext.Equals(".svg", StringComparison.OrdinalIgnoreCase) || ext.Equals(".svgz", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".svg"))
+ {
+ return "image/svg+xml";
+ }
+ if (StringHelper.EqualsIgnoreCase(ext, ".svgz"))
{
return "image/svg+xml";
}
- if (ext.Equals(".srt", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".srt"))
{
return "text/plain";
}
- if (ext.Equals(".vtt", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".vtt"))
{
return "text/vtt";
}
- if (ext.Equals(".ttml", StringComparison.OrdinalIgnoreCase))
+ if (StringHelper.EqualsIgnoreCase(ext, ".ttml"))
{
return "application/ttml+xml";
}