download_strategy: more robust filename content encoding handling.

Fixes #5713.
This commit is contained in:
Mike McQuaid 2019-02-13 13:29:37 +00:00
parent d3a1554805
commit 0c44498581
No known key found for this signature in database
GPG Key ID: 48A898132FD8EE70

View File

@ -371,14 +371,18 @@ class CurlDownloadStrategy < AbstractFileDownloadStrategy
parse_content_disposition = lambda do |line|
next unless content_disposition = content_disposition_parser.parse(line, true)
filename = nil
if filename_with_encoding = content_disposition.parameters["filename*"]
encoding, encoded_filename = filename_with_encoding.split("''", 2)
URI.decode_www_form_component(encoded_filename).encode(encoding)
else
content_disposition.filename
if encoding && encoded_filename
filename = URI.decode_www_form_component(encoded_filename).encode(encoding)
end
end
filename || content_disposition.filename
end
filenames = lines.map(&parse_content_disposition).compact
time =