aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Net/MimeTypes.cs
blob: af2843f821fc58013bf87b093fac60f14b47bd7d (plain)
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
102
103
104
105
106
107
108
109
110
111
112
113
114
using System;
using System.IO;

namespace MediaBrowser.Common.Net
{
    public static class MimeTypes
    {
        public static string GetMimeType(string path)
        {
            string ext = Path.GetExtension(path);

            // http://en.wikipedia.org/wiki/Internet_media_type
            // Add more as needed

            // Type video
            if (ext.EndsWith("mpg", StringComparison.OrdinalIgnoreCase) || ext.EndsWith("mpeg", StringComparison.OrdinalIgnoreCase))
            {
                return "video/mpeg";
            }
            else if (ext.EndsWith("mp4", StringComparison.OrdinalIgnoreCase))
            {
                return "video/mp4";
            }
            else if (ext.EndsWith("ogv", StringComparison.OrdinalIgnoreCase))
            {
                return "video/ogg";
            }
            else if (ext.EndsWith("mov", StringComparison.OrdinalIgnoreCase))
            {
                return "video/quicktime";
            }
            else if (ext.EndsWith("webm", StringComparison.OrdinalIgnoreCase))
            {
                return "video/webm";
            }
            else if (ext.EndsWith("mkv", StringComparison.OrdinalIgnoreCase))
            {
                return "video/x-matroska";
            }
            else if (ext.EndsWith("wmv", StringComparison.OrdinalIgnoreCase))
            {
                return "video/x-ms-wmv";
            }
            else if (ext.EndsWith("flv", StringComparison.OrdinalIgnoreCase))
            {
                return "video/x-flv";
            }
            else if (ext.EndsWith("avi", StringComparison.OrdinalIgnoreCase))
            {
                return "video/avi";
            }

            // Type text
            else if (ext.EndsWith("css", StringComparison.OrdinalIgnoreCase))
            {
                return "text/css";
            }
            else if (ext.EndsWith("csv", StringComparison.OrdinalIgnoreCase))
            {
                return "text/csv";
            }
            else if (ext.EndsWith("html", StringComparison.OrdinalIgnoreCase) || ext.EndsWith("html", StringComparison.OrdinalIgnoreCase))
            {
                return "text/html";
            }
            else if (ext.EndsWith("txt", StringComparison.OrdinalIgnoreCase))
            {
                return "text/plain";
            }

            // Type image
            else if (ext.EndsWith("gif", StringComparison.OrdinalIgnoreCase))
            {
                return "image/gif";
            }
            else if (ext.EndsWith("jpg", StringComparison.OrdinalIgnoreCase) || ext.EndsWith("jpeg", StringComparison.OrdinalIgnoreCase))
            {
                return "image/jpeg";
            }
            else if (ext.EndsWith("png", StringComparison.OrdinalIgnoreCase))
            {
                return "image/png";
            }
            else if (ext.EndsWith("ico", StringComparison.OrdinalIgnoreCase))
            {
                return "image/vnd.microsoft.icon";
            }

             // Type audio
            else if (ext.EndsWith("mp3", StringComparison.OrdinalIgnoreCase))
            {
                return "audio/mpeg";
            }
            else if (ext.EndsWith("m4a", StringComparison.OrdinalIgnoreCase) || ext.EndsWith("aac", StringComparison.OrdinalIgnoreCase))
            {
                return "audio/mp4";
            }
            else if (ext.EndsWith("webma", StringComparison.OrdinalIgnoreCase))
            {
                return "audio/webm";
            }
            else if (ext.EndsWith("wav", StringComparison.OrdinalIgnoreCase))
            {
                return "audio/wav";
            }
            else if (ext.EndsWith("ogg", StringComparison.OrdinalIgnoreCase) || ext.EndsWith("oga", StringComparison.OrdinalIgnoreCase))
            {
                return "audio/ogg";
            }
           
            throw new InvalidOperationException("Argument not supported: " + path);
        }
    }
}