Skip to content

Commit

Permalink
Merge pull request #64 from atambo/openxml
Browse files Browse the repository at this point in the history
Handle Office Open XML types for filed generated outside MSOffice
  • Loading branch information
minad committed Apr 19, 2019
2 parents b62d29d + f4afc9b commit 386b92d
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 9 deletions.
6 changes: 3 additions & 3 deletions lib/mimemagic/overlay.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Extra magic

[['application/vnd.openxmlformats-officedocument.presentationml.presentation', [[0, "PK\003\004", [[30, '[Content_Types].xml', [[0..5000, 'ppt/']]]]]]],
['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', [[0, "PK\003\004", [[30, '[Content_Types].xml', [[0..5000, 'xl/']]]]]]],
['application/vnd.openxmlformats-officedocument.wordprocessingml.document', [[0, "PK\003\004", [[30, '[Content_Types].xml', [[0..5000, 'word/']]]]]]]].each do |magic|
[['application/vnd.openxmlformats-officedocument.presentationml.presentation', [[0, "PK\003\004", [[0..5000, '[Content_Types].xml', [[0..5000, 'ppt/']]]]]]],
['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', [[0, "PK\003\004", [[0..5000, '[Content_Types].xml', [[0..5000, 'xl/']]]]]]],
['application/vnd.openxmlformats-officedocument.wordprocessingml.document', [[0, "PK\003\004", [[0..5000, '[Content_Types].xml', [[0..5000, 'word/']]]]]]]].each do |magic|
MimeMagic.add(magic[0], magic: magic[1])
end
Binary file not shown.
Binary file not shown.
17 changes: 11 additions & 6 deletions test/mimemagic_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -70,24 +70,29 @@ def test_recognize_by_a_path

def test_recognize_xlsx_as_zip_without_magic
file = "test/files/application.vnd.openxmlformats-officedocument.spreadsheetml.sheet"
assert_equal "application/zip", MimeMagic.by_magic(File.read(file)).to_s
assert_equal "application/zip", MimeMagic.by_magic(File.open(file, 'rb')).to_s
%w(msoffice rubyxl gdocs).each do |variant|
file = "test/files/application.vnd.openxmlformats-officedocument.spreadsheetml{#{variant}}.sheet"
assert_equal "application/zip", MimeMagic.by_magic(File.read(file)).to_s
assert_equal "application/zip", MimeMagic.by_magic(File.open(file, 'rb')).to_s
end
end

def test_recognize_by_magic
load "mimemagic/overlay.rb"
Dir['test/files/*'].each do |file|
mime = file[11..-1].sub('.', '/')
mime = file[11..-1].sub('.', '/').sub(/\{\w+\}/, '')
assert_equal mime, MimeMagic.by_magic(File.read(file)).to_s
assert_equal mime, MimeMagic.by_magic(File.open(file, 'rb')).to_s
end
end

def test_recognize_all_by_magic
load 'mimemagic/overlay.rb'
file = 'test/files/application.vnd.openxmlformats-officedocument.spreadsheetml.sheet'
mimes = %w[application/vnd.openxmlformats-officedocument.spreadsheetml.sheet application/zip]
assert_equal mimes, MimeMagic.all_by_magic(File.read(file)).map(&:type)
%w(msoffice rubyxl gdocs).each do |variant|
file = "test/files/application.vnd.openxmlformats-officedocument.spreadsheetml{#{variant}}.sheet"
mimes = %w[application/vnd.openxmlformats-officedocument.spreadsheetml.sheet application/zip]
assert_equal mimes, MimeMagic.all_by_magic(File.read(file)).map(&:type)
end
end

def test_have_add
Expand Down

0 comments on commit 386b92d

Please sign in to comment.