1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
# encoding: utf-8
# frozen_string_literal: true
require 'mail/fields/common/parameter_hash'
module Mail
class ContentDispositionField < StructuredField
FIELD_NAME = 'content-disposition'
CAPITALIZED_FIELD = 'Content-Disposition'
def initialize(value = nil, charset = 'utf-8')
self.charset = charset
value = ensure_filename_quoted(value)
super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
self.parse
self
end
def parse(val = value)
unless Utilities.blank?(val)
@element = Mail::ContentDispositionElement.new(val)
end
end
def element
@element ||= Mail::ContentDispositionElement.new(value)
end
def disposition_type
element.disposition_type
end
def parameters
@parameters = ParameterHash.new
element.parameters.each { |p| @parameters.merge!(p) } unless element.parameters.nil?
@parameters
end
def filename
case
when !Utilities.blank?(parameters['filename'])
@filename = parameters['filename']
when !Utilities.blank?(parameters['name'])
@filename = parameters['name']
else
@filename = nil
end
@filename
end
# TODO: Fix this up
def encoded
if parameters.length > 0
p = ";\r\n\s#{parameters.encoded}\r\n"
else
p = "\r\n"
end
"#{CAPITALIZED_FIELD}: #{disposition_type}" + p
end
def decoded
if parameters.length > 0
p = "; #{parameters.decoded}"
else
p = ""
end
"#{disposition_type}" + p
end
end
end
|