FIX: Use same code path for downloading images

This commit is contained in:
Robin Ward
2017-05-23 13:31:20 -04:00
parent e5e7a15a85
commit 36e477750c
6 changed files with 29 additions and 15 deletions

View File

@ -1,4 +1,5 @@
require "open-uri"
require "final_destination"
class FileHelper
@ -10,7 +11,7 @@ class FileHelper
url = "https:" + url if url.start_with?("//")
raise Discourse::InvalidParameters.new(:url) unless url =~ /^https?:\/\//
uri = parse_url(url)
uri = FinalDestination.new(url).resolve
extension = File.extname(uri.path)
tmp = Tempfile.new([tmp_file_name, extension])
@ -36,15 +37,4 @@ class FileHelper
@@images_regexp ||= /\.(#{images.to_a.join("|")})$/i
end
# HACK to support underscores in URLs
# cf. http://stackoverflow.com/a/18938253/11983
def self.parse_url(url)
URI.parse(url)
rescue URI::InvalidURIError
host = url.match(".+\:\/\/([^\/]+)")[1]
uri = URI.parse(url.sub(host, 'valid-host'))
uri.instance_variable_set("@host", host)
uri
end
end