From 6d3b8ed4f64401dfa4afe1ca2e7463da5d884fa4 Mon Sep 17 00:00:00 2001 From: siutin Date: Sat, 19 Jul 2025 03:20:45 +0800 Subject: [PATCH] Prefer audio/ogg instead of audio/opus --- lib/marcel/mime_type/definitions.rb | 1 + test/fixtures/magic/audio/ogg.opus | Bin 0 -> 9269 bytes test/fixtures/name/audio/ogg.opus | Bin 0 -> 9269 bytes 3 files changed, 1 insertion(+) create mode 100644 test/fixtures/magic/audio/ogg.opus create mode 100644 test/fixtures/name/audio/ogg.opus diff --git a/lib/marcel/mime_type/definitions.rb b/lib/marcel/mime_type/definitions.rb index 65db8bb..9388d6d 100644 --- a/lib/marcel/mime_type/definitions.rb +++ b/lib/marcel/mime_type/definitions.rb @@ -33,6 +33,7 @@ Marcel::MimeType.extend "application/vnd.apple.keynote", extensions: %w( key ), parents: "application/zip" Marcel::MimeType.extend "audio/aac", extensions: %w( aac ), parents: "audio/x-aac" +Marcel::MimeType.extend("audio/ogg", extensions: %w( opus ), magic: [[0, 'OggS', [[28, 'OpusHead']]]]) Marcel::MimeType.extend("audio/ogg", extensions: %w( ogg oga ), magic: [[0, 'OggS', [[29, 'vorbis']]]]) Marcel::MimeType.extend "image/vnd.dwg", magic: [[0, "AC10"]] diff --git a/test/fixtures/magic/audio/ogg.opus b/test/fixtures/magic/audio/ogg.opus new file mode 100644 index 0000000000000000000000000000000000000000..1250c6f57add9e4a118e2190bb810006662adb5f GIT binary patch literal 9269 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 XL86Fw043XGNRnIsX+FKM@