diff --git a/modules/typesniffer/typesniffer.go b/modules/typesniffer/typesniffer.go index 7887fd42b7..02c287bcd6 100644 --- a/modules/typesniffer/typesniffer.go +++ b/modules/typesniffer/typesniffer.go @@ -62,7 +62,7 @@ func (ct SniffedType) IsVideo() bool { // IsAudio detects if data is an video format func (ct SniffedType) IsAudio() bool { - return strings.Contains(ct.contentType, "audio/") + return strings.Contains(ct.contentType, "audio/") || strings.Contains(ct.contentType, "application/ogg") } // IsRepresentableAsText returns true if file content can be represented as diff --git a/modules/typesniffer/typesniffer_test.go b/modules/typesniffer/typesniffer_test.go index 6c6da34aa0..74bc5a88a6 100644 --- a/modules/typesniffer/typesniffer_test.go +++ b/modules/typesniffer/typesniffer_test.go @@ -113,6 +113,8 @@ func TestIsAudio(t *testing.T) { assert.True(t, DetectContentType([]byte("ID3Toy\000")).IsAudio()) assert.True(t, DetectContentType([]byte("ID3Toy\n====\t* hi 🌞, ...")).IsText()) // test ID3 tag for plain text assert.True(t, DetectContentType([]byte("ID3Toy\n====\t* hi 🌞, ..."+"🌛"[0:2])).IsText()) // test ID3 tag with incomplete UTF8 char + + assert.True(t, DetectContentType([]byte("OggS\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x46\x00\x00\x00\x00\x00\x00\x1f\xf6\xb4\xfc\x01\x1e\x01\x76\x6f\x72")).IsAudio()) // application/ogg } func TestDetectContentTypeFromReader(t *testing.T) {