A pretty much line-for-line port of https://github.com/sindresorhus/file-type Many thanks to Sindre Sorhus for putting this together.
The module has two methods:
read_and_detect. The former works on String
objects (when you already read stuff), the latter works on IO objects (or anything you
can #read from).
file_type = File.open('suspicious_file.bin', 'rb') do |f MagicBytes.read_and_detect(f) end file_type.ext #=> 'msi', someone is uploading a Windows installer...
If the file type is unknown, the last-resort variant of
bin as extension
binary/octet-stream will be returned.