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
|
# encoding: utf-8
require "ffi"
require "magic/errors"
require "magic/api"
require "magic/constants"
require "magic/database"
require "magic/version"
module Magic
class << self
# Guesses mime of given file
#
# ====== Example
# Magic.guess_file_mime("public/images/rails.png")
# # => "image/png; charset=binary"
def guess_file_mime(filename, *args)
guess(*args.unshift(:mime)) { |db| db.file(filename) }
end
# Guesses mime encoding of given file
#
# ===== Example
# Magic.guess_file_mime_encoding("public/images/rails.png")
# # => "binary"
def guess_file_mime_encoding(filename, *args)
guess(*args.unshift(:mime_encoding)) { |db| db.file(filename) }
end
# Guesses mime type of given file
#
# ===== Example
# Magic.guess_file_mime_type("public/images/rails.png")
# # => "image/png"
def guess_file_mime_type(filename, *args)
guess(*args.unshift(:mime_type)) { |db| db.file(filename) }
end
# Guesses mime type of given string
#
# ===== Example
# Magic.guess_string_mime("Magic® File™")
# # => "text/plain; charset=utf-8"
def guess_string_mime(string, *args)
guess(*args.unshift(:mime)) { |db| db.buffer(string) }
end
# Guesses mime type of given string
#
# ===== Example
# Magic.guess_string_mime_encoding("Magic® File™")
# # => "utf-8"
def guess_string_mime_encoding(string, *args)
guess(*args.unshift(:mime_encoding)) { |db| db.buffer(string) }
end
# Guesses mime type of given string
#
# ===== Example
# Magic.guess_string_mime_type("Magic® File™")
# # => "text/plain"
def guess_string_mime_type(string, *args)
guess(*args.unshift(:mime_type)) { |db| db.buffer(string) }
end
# Creates magic database and yields it to the given block
#
# ===== Example
# Magic.guess(:mime) { |db| db.buffer("Magic® File™") }
# # => "text/plain; charset=utf-8"
def guess(*args)
db = Database.new(*args)
result = yield(db)
db.close
result
end
end
end
|