class ESMDl::Download
Public Class Methods
new(release, with_doc = true, with_metadata = false)
click to toggle source
# File lib/esmdl/download.rb, line 7 def initialize(release, with_doc = true, with_metadata = false) @release = release fetch download_url(@release['rlsArtifactsPath'], @release['rlsArtifactsFile']), @release['rlsArtifactsFile'] fetch download_url(@release['rlsDocPath'], @release['rlsDocFile']), @release['rlsDocFile'] if with_doc fetch download_url(@release['rlsMetadataPath'], @release['rlsMetadataFile']), @release['rlsMetadataFile'] if with_metadata end
Public Instance Methods
download_url(filepath, filename)
click to toggle source
# File lib/esmdl/download.rb, line 14 def download_url(filepath, filename) url = "#{ESMDl.config.base_url}/releaseservices/Release?" url << "login=#{ESMDl.config.username}&" url << "productid=#{@release['productId']}&" url << "rlsversion=#{@release['version']}&" url << "esmversion=#{ESMDl.config.esmversion}&" url << "filepath=#{URI.encode(filepath)}&" url << "filename=#{filename}&" end
fetch(url, filename)
click to toggle source
# File lib/esmdl/download.rb, line 24 def fetch(url, filename) return if filename == "null" full_path = "#{ESMDl.config.stage_dir}#{filename}" print "Starting download of #{full_path}..." uri = URI(url) Net::HTTP.start(uri.host, uri.port, use_ssl: true, ciphers: "TLSv1.2:!aNULL:!eNULL", ssl_version: "TLSv1_2") do |http| request = Net::HTTP::Get.new uri.request_uri request.basic_auth ESMDl.config.username, ESMDl.config.password http.request request do |response| open full_path, 'w' do |io| response.read_body do |chunk| io.write chunk end end end end filesize = File::size(full_path) puts "done! (#{ Filesize.from("#{filesize} B").pretty})" end