From 547db83cdd91cfa7f7f75879d5fe9dffb1b6e563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erkan=20Durmu=C5=9F?= Date: Fri, 24 Mar 2023 16:29:42 +0300 Subject: [PATCH] Get mime fallback (#2340) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * added fallback to go's mime detection * added test for getting mime * added err check * added err check * removing import alias for builtin mime and aserting error for adding mime type. * removing import alias for builtin mime and aserting error for adding mime type. * added fallback to go's mime detection * added test for getting mime * added err check * added err check * removing import alias for builtin mime and aserting error for adding mime type. * removing import alias for builtin mime and aserting error for adding mime type. --------- Co-authored-by: René Werner --- utils/http.go | 22 ++++++++++++++++------ utils/http_test.go | 8 ++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/utils/http.go b/utils/http.go index 02498aed..fe394f51 100644 --- a/utils/http.go +++ b/utils/http.go @@ -5,6 +5,7 @@ package utils import ( + "mime" "strings" ) @@ -15,16 +16,25 @@ func GetMIME(extension string) string { if len(extension) == 0 { return "" } - var mime string + var foundMime string if extension[0] == '.' { - mime = mimeExtensions[extension[1:]] + foundMime = mimeExtensions[extension[1:]] } else { - mime = mimeExtensions[extension] + foundMime = mimeExtensions[extension] } - if len(mime) == 0 { - return MIMEOctetStream + + if len(foundMime) == 0 { + if extension[0] != '.' { + foundMime = mime.TypeByExtension("." + extension) + } else { + foundMime = mime.TypeByExtension(extension) + } + + if foundMime == "" { + return MIMEOctetStream + } } - return mime + return foundMime } // ParseVendorSpecificContentType check if content type is vendor specific and diff --git a/utils/http_test.go b/utils/http_test.go index 2abe6c51..56a60296 100644 --- a/utils/http_test.go +++ b/utils/http_test.go @@ -23,6 +23,14 @@ func Test_GetMIME(t *testing.T) { res = GetMIME("unknown") AssertEqual(t, MIMEOctetStream, res) + + err := mime.AddExtensionType(".mjs", "application/javascript") + if err == nil { + res = GetMIME(".mjs") + AssertEqual(t, "application/javascript", res) + } + AssertEqual(t, nil, err) + // empty case res = GetMIME("") AssertEqual(t, "", res)