mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-09 15:37:56 -05:00
lib/downloader: Add fix for invalid file size recieved from server (#7271)
* Add fix for github raw links * lib/downloader: Add fix for github raw links * Update comment
This commit is contained in:
@@ -125,7 +125,7 @@ def http_downloader (uri, filename = File.basename(url), verbose = false)
|
|||||||
|
|
||||||
response.read_body do |chunk|
|
response.read_body do |chunk|
|
||||||
downloaded_size += chunk.size # record downloaded size, used for showing progress bar
|
downloaded_size += chunk.size # record downloaded size, used for showing progress bar
|
||||||
progress_bar.set_downloaded_size(downloaded_size) if file_size.positive?
|
progress_bar.set_downloaded_size(downloaded_size, invalid_size_error: false) if file_size.positive?
|
||||||
|
|
||||||
io.write(chunk) # write to file
|
io.write(chunk) # write to file
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ require_relative 'color'
|
|||||||
require_relative 'convert_size'
|
require_relative 'convert_size'
|
||||||
|
|
||||||
class ProgressBar
|
class ProgressBar
|
||||||
|
class InvalidSizeError < StandardError; end
|
||||||
|
|
||||||
attr_accessor :progress_bar_showing
|
attr_accessor :progress_bar_showing
|
||||||
|
|
||||||
def initialize (total_size)
|
def initialize (total_size)
|
||||||
@@ -45,7 +47,27 @@ class ProgressBar
|
|||||||
Process.kill('WINCH', 0) # trigger the trap above
|
Process.kill('WINCH', 0) # trigger the trap above
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_downloaded_size (downloaded_size)
|
def set_downloaded_size (downloaded_size, invalid_size_error: true)
|
||||||
|
if downloaded_size > @total_size
|
||||||
|
# when the given downloaded size/total size is invalid (given downloaded size > given total size),
|
||||||
|
# set all info to unknown (except downloaded size)
|
||||||
|
@elapsed_time = @total_size = 0
|
||||||
|
@elapsed_time_in_str = '--:--:--'
|
||||||
|
|
||||||
|
@percentage = 100
|
||||||
|
@percentage_in_str = '---'
|
||||||
|
|
||||||
|
@total_size_in_str = ''
|
||||||
|
@downloaded_size_in_str = human_size(downloaded_size)
|
||||||
|
|
||||||
|
# raise error unless #{invalid_size_error} is set to false
|
||||||
|
if invalid_size_error
|
||||||
|
raise InvalidSizeError, 'The given downloaded size is larger than the total size'
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if @start_time
|
if @start_time
|
||||||
@elapsed_time = (Time.now - @start_time).to_i
|
@elapsed_time = (Time.now - @start_time).to_i
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user