downloads: rewrite url in download!, not http_get_streaming.
Refactor Downloads::File#http_get_streaming to just download the given url, not rewrite it. Don't clobber @source or @data in `#size` either.
This commit is contained in:
@@ -26,20 +26,23 @@ module Downloads
|
|||||||
end
|
end
|
||||||
|
|
||||||
def size
|
def size
|
||||||
@source, headers, @data = before_download(@source, @data)
|
url, headers, _ = before_download(@source, @data)
|
||||||
options = { timeout: 3, headers: headers }.deep_merge(Danbooru.config.httparty_options)
|
options = { timeout: 3, headers: headers }.deep_merge(Danbooru.config.httparty_options)
|
||||||
res = HTTParty.head(@source, options)
|
res = HTTParty.head(url, options)
|
||||||
res.content_length
|
res.content_length
|
||||||
end
|
end
|
||||||
|
|
||||||
def download!
|
def download!
|
||||||
|
url, headers, @data = before_download(@source, @data)
|
||||||
|
|
||||||
::File.open(@file_path, "wb") do |out|
|
::File.open(@file_path, "wb") do |out|
|
||||||
@source, @data = http_get_streaming(@source, @data) do |response|
|
http_get_streaming(url, headers) do |response|
|
||||||
out.write(response)
|
out.write(response)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@downloaded_source = @source
|
|
||||||
@source = after_download(@source)
|
@downloaded_source = url
|
||||||
|
@source = after_download(url)
|
||||||
end
|
end
|
||||||
|
|
||||||
def before_download(url, datums)
|
def before_download(url, datums)
|
||||||
@@ -67,7 +70,7 @@ module Downloads
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def http_get_streaming(src, datums = {}, options = {}, &block)
|
def http_get_streaming(src, headers = {}, options = {}, &block)
|
||||||
max_size = options[:max_size] || Danbooru.config.max_file_size
|
max_size = options[:max_size] || Danbooru.config.max_file_size
|
||||||
max_size = nil if max_size == 0 # unlimited
|
max_size = nil if max_size == 0 # unlimited
|
||||||
limit = 4
|
limit = 4
|
||||||
@@ -79,9 +82,6 @@ module Downloads
|
|||||||
raise Error.new("URL must be HTTP or HTTPS")
|
raise Error.new("URL must be HTTP or HTTPS")
|
||||||
end
|
end
|
||||||
|
|
||||||
src, headers, datums = before_download(src, datums)
|
|
||||||
url = URI.parse(src)
|
|
||||||
|
|
||||||
validate_local_hosts(url)
|
validate_local_hosts(url)
|
||||||
|
|
||||||
begin
|
begin
|
||||||
@@ -96,7 +96,7 @@ module Downloads
|
|||||||
|
|
||||||
@content_type = res["Content-Type"]
|
@content_type = res["Content-Type"]
|
||||||
|
|
||||||
return [src, datums]
|
return
|
||||||
else
|
else
|
||||||
raise Error.new("HTTP error code: #{res.code} #{res.message}")
|
raise Error.new("HTTP error code: #{res.code} #{res.message}")
|
||||||
end
|
end
|
||||||
@@ -109,8 +109,6 @@ module Downloads
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end # while
|
end # while
|
||||||
|
|
||||||
[src, datums]
|
|
||||||
end # def
|
end # def
|
||||||
|
|
||||||
def fix_twitter_sources(src)
|
def fix_twitter_sources(src)
|
||||||
|
|||||||
Reference in New Issue
Block a user