mimetypes.lua Version 1.0.0
This is just a quick Lua library designed to provide a nice, non-server-bound database of MIME types. Usage is simple:
local mimetypes = require 'mimetypes'
mimetypes.guess "docs.txt" -- text/plain
mimetypes.guess "word.doc" -- application/msword
mimetypes.guess "init.lua" -- text/x-lua
Should you need your own MIME types, you can do this:
local mimedb = mimetypes.copy()
mimedb.extensions["ext"] = "application/x-cool-type"
mimetypes.guess("myfile.ext", mimedb) -- application/x-cool-type
If you want to make sure it works, run lua test.lua
(or use Shake).
mimetypes.copy([db])
- Copies the default MIME types database and returns
the copy. If you provide db
, it is copied instead of the default.
mimetypes.guess(filename[, db])
- Guesses the MIME type of the file named
filename
. If a MIME type could not be ascertained, nil is returned. If you
provide db
, it is used to look up the MIME type instead of the default
database.
Each database is a table that contains two fields - extensions
and
filenames
. filenames
is checked first, as it maps literal filenames
(like README
) to MIME types.
If that doesn't work, the file's extension is taken and looked up in
extensions
. (For example, report.pdf
would look up pdf
and return the
MIME type there, which is application/pdf
.)
The default database is immutable (and hidden), because it's shared between
everyone who calls guess
without arguments, and messing with it would be a
bad thing.
If you encounter any missing, inaccurate, or questionably assigned MIME types, file a bug (preferably including a diff) on the issue tracker at http://www.bitbucket.org/leafstorm/lua-mimetypes/, or e-mail me at [email protected].