Move download functions into a module

This commit is contained in:
2023-01-04 10:51:08 +01:00
parent 5b26e7dca8
commit ef9942fe99
3 changed files with 67 additions and 48 deletions

View File

@ -28,58 +28,58 @@ module SlackBuilder
repository
end
end
def write_chunk(response, checksum, progressbar, io)
response.read_body do |chunk|
progressbar.progress += chunk.length
io << chunk
checksum << chunk
def self.download(uri, target)
print Term::ANSIColor.green "Downloading #{uri} "
checksum = nil
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
checksum = start_download uri, target, http
end
puts
checksum
end
end
def write_download(target, response)
checksum = Digest::MD5.new
progressbar = ProgressBar.create title: target, total: response.header.content_length
private_class_method def self.redirect_download(location, target)
puts 'redirecting...'
new_location = URI location
File.open target, 'w' do |io|
write_chunk response, checksum, progressbar, io
download new_location, target
end
progressbar.finish
checksum
end
def redirect_download(location, target)
puts 'redirecting...'
new_location = URI location
download new_location, target
end
def start_download(uri, target, http)
request = Net::HTTP::Get.new uri
http.request request do |response|
case response
when Net::HTTPRedirection
return redirect_download response['location'], target
else
return write_download target, response
private_class_method def self.write_chunk(response, checksum, progressbar, io)
response.read_body do |chunk|
progressbar.progress += chunk.length
io << chunk
checksum << chunk
end
end
end
def download(uri, target)
print Term::ANSIColor.green "Downloading #{uri} "
checksum = nil
private_class_method def self.write_download(target, response)
checksum = Digest::MD5.new
progressbar = ProgressBar.create title: target, total: response.header.content_length
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
checksum = start_download uri, target, http
File.open target, 'w' do |io|
write_chunk response, checksum, progressbar, io
end
progressbar.finish
checksum
end
puts
checksum
private_class_method def self.start_download(uri, target, http)
request = Net::HTTP::Get.new uri
http.request request do |response|
case response
when Net::HTTPRedirection
return redirect_download response['location'], target
else
return write_download target, response
end
end
end
end
def hosted_sources(absolute_url)
@ -135,10 +135,10 @@ def download_and_deploy(uri, tarball)
if remote_file_exists?(remote_path)
uri = URI hosted_sources(remote_path)
return download(uri, "slackbuilds/#{tarball}").hexdigest
return SlackBuilder.download(uri, "slackbuilds/#{tarball}").hexdigest
end
checksum = download uri, "slackbuilds/#{tarball}"
checksum = SlackBuilder.download uri, "slackbuilds/#{tarball}"
sh(*upload_command(tarball, remote_path))
checksum.hexdigest
end