123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
-
- var db = require('mime-db')
-
- // types[extension] = type
- exports.types = Object.create(null)
- // extensions[type] = [extensions]
- exports.extensions = Object.create(null)
-
- Object.keys(db).forEach(function (name) {
- var mime = db[name]
- var exts = mime.extensions
- if (!exts || !exts.length) return
- exports.extensions[name] = exts
- exts.forEach(function (ext) {
- exports.types[ext] = name
- })
- })
-
- exports.lookup = function (string) {
- if (!string || typeof string !== "string") return false
- // remove any leading paths, though we should just use path.basename
- string = string.replace(/.*[\.\/\\]/, '').toLowerCase()
- if (!string) return false
- return exports.types[string] || false
- }
-
- exports.extension = function (type) {
- if (!type || typeof type !== "string") return false
- // to do: use media-typer
- type = type.match(/^\s*([^;\s]*)(?:;|\s|$)/)
- if (!type) return false
- var exts = exports.extensions[type[1].toLowerCase()]
- if (!exts || !exts.length) return false
- return exts[0]
- }
-
- // type has to be an exact mime type
- exports.charset = function (type) {
- var mime = db[type]
- if (mime && mime.charset) return mime.charset
-
- // default text/* to utf-8
- if (/^text\//.test(type)) return 'UTF-8'
-
- return false
- }
-
- // backwards compatibility
- exports.charsets = {
- lookup: exports.charset
- }
-
- // to do: maybe use set-type module or something
- exports.contentType = function (type) {
- if (!type || typeof type !== "string") return false
- if (!~type.indexOf('/')) type = exports.lookup(type)
- if (!type) return false
- if (!~type.indexOf('charset')) {
- var charset = exports.charset(type)
- if (charset) type += '; charset=' + charset.toLowerCase()
- }
- return type
- }
|