6491d70326
Also update tests for itextomml 1.3.25.
208 lines
8 KiB
Ruby
208 lines
8 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
|