instiki/vendor/plugins/rack/lib/rack/mime.rb

209 lines
8.0 KiB
Ruby

module Rack
module Mime
# Returns String with mime type if found, otherwise use +fallback+.
# +ext+ should be filename extension in the '.ext' format that
# File.extname(file) returns.
# +fallback+ may be any object
#
# Also see the documentation for MIME_TYPES
#
# Usage:
# Rack::Mime.mime_type('.foo')
#
# This is a shortcut for:
# Rack::Mime::MIME_TYPES.fetch('.foo', 'application/octet-stream')
def mime_type(ext, fallback='application/octet-stream')
MIME_TYPES.fetch(ext.to_s.downcase, fallback)
end
module_function :mime_type
# List of most common mime-types, selected various sources
# according to their usefulness in a webserving scope for Ruby
# users.
#
# To amend this list with your local mime.types list you can use:
#
# require 'webrick/httputils'
# list = WEBrick::HTTPUtils.load_mime_types('/etc/mime.types')
# Rack::Mime::MIME_TYPES.merge!(list)
#
# To add the list mongrel provides, use:
#
# require 'mongrel/handlers'
# Rack::Mime::MIME_TYPES.merge!(Mongrel::DirHandler::MIME_TYPES)
MIME_TYPES = {
".3gp" => "video/3gpp",
".a" => "application/octet-stream",
".ai" => "application/postscript",
".aif" => "audio/x-aiff",
".aiff" => "audio/x-aiff",
".asc" => "application/pgp-signature",
".asf" => "video/x-ms-asf",
".asm" => "text/x-asm",
".asx" => "video/x-ms-asf",
".atom" => "application/atom+xml",
".au" => "audio/basic",
".avi" => "video/x-msvideo",
".bat" => "application/x-msdownload",
".bin" => "application/octet-stream",
".bmp" => "image/bmp",
".bz2" => "application/x-bzip2",
".c" => "text/x-c",
".cab" => "application/vnd.ms-cab-compressed",
".cc" => "text/x-c",
".chm" => "application/vnd.ms-htmlhelp",
".class" => "application/octet-stream",
".com" => "application/x-msdownload",
".conf" => "text/plain",
".cpp" => "text/x-c",
".crt" => "application/x-x509-ca-cert",
".css" => "text/css",
".csv" => "text/csv",
".cxx" => "text/x-c",
".deb" => "application/x-debian-package",
".der" => "application/x-x509-ca-cert",
".diff" => "text/x-diff",
".djv" => "image/vnd.djvu",
".djvu" => "image/vnd.djvu",
".dll" => "application/x-msdownload",
".dmg" => "application/octet-stream",
".doc" => "application/msword",
".dot" => "application/msword",
".dtd" => "application/xml-dtd",
".dvi" => "application/x-dvi",
".ear" => "application/java-archive",
".eml" => "message/rfc822",
".eps" => "application/postscript",
".exe" => "application/x-msdownload",
".f" => "text/x-fortran",
".f77" => "text/x-fortran",
".f90" => "text/x-fortran",
".flv" => "video/x-flv",
".for" => "text/x-fortran",
".gem" => "application/octet-stream",
".gemspec" => "text/x-script.ruby",
".gif" => "image/gif",
".gz" => "application/x-gzip",
".h" => "text/x-c",
".htc" => "text/x-component",
".hh" => "text/x-c",
".htm" => "text/html",
".html" => "text/html",
".ico" => "image/vnd.microsoft.icon",
".ics" => "text/calendar",
".ifb" => "text/calendar",
".iso" => "application/octet-stream",
".jar" => "application/java-archive",
".java" => "text/x-java-source",
".jnlp" => "application/x-java-jnlp-file",
".jpeg" => "image/jpeg",
".jpg" => "image/jpeg",
".js" => "application/javascript",
".json" => "application/json",
".log" => "text/plain",
".m3u" => "audio/x-mpegurl",
".m4v" => "video/mp4",
".man" => "text/troff",
".manifest"=> "text/cache-manifest",
".mathml" => "application/mathml+xml",
".mbox" => "application/mbox",
".mdoc" => "text/troff",
".me" => "text/troff",
".mid" => "audio/midi",
".midi" => "audio/midi",
".mime" => "message/rfc822",
".mml" => "application/mathml+xml",
".mng" => "video/x-mng",
".mov" => "video/quicktime",
".mp3" => "audio/mpeg",
".mp4" => "video/mp4",
".mp4v" => "video/mp4",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".ms" => "text/troff",
".msi" => "application/x-msdownload",
".odp" => "application/vnd.oasis.opendocument.presentation",
".ods" => "application/vnd.oasis.opendocument.spreadsheet",
".odt" => "application/vnd.oasis.opendocument.text",
".ogg" => "application/ogg",
".ogv" => "video/ogg",
".p" => "text/x-pascal",
".pas" => "text/x-pascal",
".pbm" => "image/x-portable-bitmap",
".pdf" => "application/pdf",
".pem" => "application/x-x509-ca-cert",
".pgm" => "image/x-portable-graymap",
".pgp" => "application/pgp-encrypted",
".pkg" => "application/octet-stream",
".pl" => "text/x-script.perl",
".pm" => "text/x-script.perl-module",
".png" => "image/png",
".pnm" => "image/x-portable-anymap",
".ppm" => "image/x-portable-pixmap",
".pps" => "application/vnd.ms-powerpoint",
".ppt" => "application/vnd.ms-powerpoint",
".ps" => "application/postscript",
".psd" => "image/vnd.adobe.photoshop",
".py" => "text/x-script.python",
".qt" => "video/quicktime",
".ra" => "audio/x-pn-realaudio",
".rake" => "text/x-script.ruby",
".ram" => "audio/x-pn-realaudio",
".rar" => "application/x-rar-compressed",
".rb" => "text/x-script.ruby",
".rdf" => "application/rdf+xml",
".roff" => "text/troff",
".rpm" => "application/x-redhat-package-manager",
".rss" => "application/rss+xml",
".rtf" => "application/rtf",
".ru" => "text/x-script.ruby",
".s" => "text/x-asm",
".sgm" => "text/sgml",
".sgml" => "text/sgml",
".sh" => "application/x-sh",
".sig" => "application/pgp-signature",
".snd" => "audio/basic",
".so" => "application/octet-stream",
".svg" => "image/svg+xml",
".svgz" => "image/svg+xml",
".swf" => "application/x-shockwave-flash",
".t" => "text/troff",
".tar" => "application/x-tar",
".tbz" => "application/x-bzip-compressed-tar",
".tcl" => "application/x-tcl",
".tex" => "application/x-tex",
".texi" => "application/x-texinfo",
".texinfo" => "application/x-texinfo",
".text" => "text/plain",
".tif" => "image/tiff",
".tiff" => "image/tiff",
".torrent" => "application/x-bittorrent",
".tr" => "text/troff",
".txt" => "text/plain",
".vcf" => "text/x-vcard",
".vcs" => "text/x-vcalendar",
".vrml" => "model/vrml",
".war" => "application/java-archive",
".wav" => "audio/x-wav",
".webm" => "video/webm",
".wma" => "audio/x-ms-wma",
".wmv" => "video/x-ms-wmv",
".wmx" => "video/x-ms-wmx",
".wrl" => "model/vrml",
".wsdl" => "application/wsdl+xml",
".xbm" => "image/x-xbitmap",
".xhtml" => "application/xhtml+xml",
".xls" => "application/vnd.ms-excel",
".xml" => "application/xml",
".xpm" => "image/x-xpixmap",
".xsl" => "application/xml",
".xslt" => "application/xslt+xml",
".yaml" => "text/yaml",
".yml" => "text/yaml",
".zip" => "application/zip",
}
end
end