class ActionDispatch::Http::ContentDisposition

Constants

RFC_5987_ESCAPED_CHAR
TRADITIONAL_ESCAPED_CHAR
VERSION

Attributes

disposition[R]
filename[R]

Public Class Methods

format(disposition:, filename:) click to toggle source
# File lib/action_dispatch/http/content_disposition.rb, line 7
def self.format(disposition:, filename:)
  new(disposition: disposition, filename: filename).to_s
end
new(disposition:, filename:) click to toggle source
# File lib/action_dispatch/http/content_disposition.rb, line 13
def initialize(disposition:, filename:)
  @disposition = disposition
  @filename = filename
end

Public Instance Methods

ascii_filename() click to toggle source
# File lib/action_dispatch/http/content_disposition.rb, line 20
def ascii_filename
  'filename="' + percent_escape(I18n.transliterate(filename), TRADITIONAL_ESCAPED_CHAR) + '"'
end
to_s() click to toggle source
# File lib/action_dispatch/http/content_disposition.rb, line 30
def to_s
  if filename
    "#{disposition}; #{ascii_filename}; #{utf8_filename}"
  else
    "#{disposition}"
  end
end
utf8_filename() click to toggle source
# File lib/action_dispatch/http/content_disposition.rb, line 26
def utf8_filename
  "filename*=UTF-8''" + percent_escape(filename, RFC_5987_ESCAPED_CHAR)
end

Private Instance Methods

percent_escape(string, pattern) click to toggle source
# File lib/action_dispatch/http/content_disposition.rb, line 39
def percent_escape(string, pattern)
  string.gsub(pattern) do |char|
    char.bytes.map { |byte| "%%%02X" % byte }.join
  end
end