Encapsulates the notion of a mime type. Can be used at render time, for example, with:
class PostsController < ActionController::Base
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html
format.ics { render text: post.to_ics, mime_type: Mime::Type["text/calendar"] }
format.xml { render xml: @people }
end
end
end
- #
- B
- H
- L
- N
- P
- R
- T
- U
- V
TRAILING_STAR_REGEXP | = | /(text|application)\/\*/ |
PARAMETER_SEPARATOR_REGEXP | = | /;\s*\w+="?\w+"?/ |
[R] | symbol |
# File actionpack/lib/action_dispatch/http/mime_type.rb, line 179 def parse(accept_header) if accept_header !~ /,/ accept_header = accept_header.split(PARAMETER_SEPARATOR_REGEXP).first parse_trailing_star(accept_header) || [Mime::Type.lookup(accept_header)].compact else list, index = AcceptList.new, 0 accept_header.split(',').each do |header| params, q = header.split(PARAMETER_SEPARATOR_REGEXP) if params.present? params.strip! params = parse_trailing_star(params) || [params] params.each do |m| list << AcceptItem.new(index, m.to_s, q) index += 1 end end end list.assort! end end
For an input of 'text'
, returns [Mime::JSON,
Mime::XML, Mime::ICS, Mime::HTML, Mime::CSS, Mime::CSV, Mime::JS,
Mime::YAML, Mime::TEXT]
.
For an input of 'application'
, returns
[Mime::HTML, Mime::JS, Mime::XML, Mime::YAML, Mime::ATOM, Mime::JSON,
Mime::RSS, Mime::URL_ENCODED_FORM]
.
# File actionpack/lib/action_dispatch/http/mime_type.rb, line 165 def register(string, symbol, mime_type_synonyms = [], extension_synonyms = [], skip_lookup = false) Mime.const_set(symbol.upcase, Type.new(string, symbol, mime_type_synonyms)) new_mime = Mime.const_get(symbol.upcase) SET << new_mime ([string] + mime_type_synonyms).each { |str| LOOKUP[str] = SET.last } unless skip_lookup ([symbol] + extension_synonyms).each { |ext| EXTENSION_LOOKUP[ext.to_s] = SET.last } @register_callbacks.each do |callback| callback.call(new_mime) end end
Registers an alias that's not used on mime type lookup, but can be referenced directly. Especially useful for rendering different HTML versions depending on the user agent, like an iPhone.
This method is opposite of register method.
Usage:
Mime::Type.unregister(:mobile)
# File actionpack/lib/action_dispatch/http/mime_type.rb, line 220 def unregister(symbol) symbol = symbol.upcase mime = Mime.const_get(symbol) Mime.instance_eval { remove_const(symbol) } SET.delete_if { |v| v.eql?(mime) } LOOKUP.delete_if { |_,v| v.eql?(mime) } EXTENSION_LOOKUP.delete_if { |_,v| v.eql?(mime) } end
Returns true if Action Pack should check requests using this Mime Type for possible request forgery. See ActionController::RequestForgeryProtection.