mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Updating deprecated API to sanitize old style attachments hash to work with new mail.attachments method
This commit is contained in:
parent
3829f9ecfd
commit
12c001fec4
2 changed files with 37 additions and 12 deletions
|
@ -31,22 +31,47 @@ module ActionMailer
|
|||
|
||||
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 @@ EOF
|
|||
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
|
||||
|
|
Loading…
Reference in a new issue