Updating deprecated API to sanitize old style attachments hash to work with...

Updating deprecated API to sanitize old style attachments hash to work with new mail.attachments method
上级 3829f9ec
......@@ -30,23 +30,48 @@ def attachment(params, &block)
super # Run deprecation hooks
params = { :content_type => params } if String === params
if filename = params.delete(:filename)
content_disposition = "attachment; filename=\"#{File.basename(filename)}\""
if params[:filename]
params = normalize_file_hash(params)
else
content_disposition = "attachment"
params = normalize_nonfile_hash(params)
end
params[:content] = params.delete(:data) if params[:data]
params = { :content_disposition => content_disposition,
:content_transfer_encoding => "base64" }.merge(params)
part(params, &block)
end
private
def normalize_nonfile_hash(params)
content_disposition = "attachment;"
mime_type = params.delete(:mime_type)
if content_type = params.delete(:content_type)
content_type = "#{mime_type || content_type};"
end
params[:body] = params.delete(:data) if params[:data]
{ :content_type => content_type,
:content_disposition => content_disposition }.merge(params)
end
def normalize_file_hash(params)
filename = File.basename(params.delete(:filename))
content_disposition = "attachment; filename=\"#{File.basename(filename)}\""
mime_type = params.delete(:mime_type)
if (content_type = params.delete(:content_type)) && (content_type !~ /filename=/)
content_type = "#{mime_type || content_type}; filename=\"#{filename}\""
end
params[:body] = params.delete(:data) if params[:data]
{ :content_type => content_type,
:content_disposition => content_disposition }.merge(params)
end
def create_mail #:nodoc:
m = @message
......
......@@ -1036,7 +1036,7 @@ def test_decode_message_with_unknown_charset
def test_empty_header_values_omitted
result = TestMailer.create_unnamed_attachment(@recipient).encoded
assert_match %r{Content-Type: application/octet-stream;}, result
assert_match %r{Content-Disposition: attachment[^;]}, result
assert_match %r{Content-Disposition: attachment;}, result
end
def test_headers_with_nonalpha_chars
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册