Class: ESMDl::Download
- Inherits:
-
Object
- Object
- ESMDl::Download
- Defined in:
- lib/esmdl/download.rb
Instance Method Summary collapse
- #download_url(filepath, filename) ⇒ Object
- #fetch(url, filename) ⇒ Object
-
#initialize(release, with_doc = true, with_metadata = false) ⇒ Download
constructor
A new instance of Download.
Constructor Details
#initialize(release, with_doc = true, with_metadata = false) ⇒ Download
Returns a new instance of Download.
7 8 9 10 11 12 |
# File 'lib/esmdl/download.rb', line 7 def initialize(release, with_doc = true, = 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 end |
Instance Method Details
#download_url(filepath, filename) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# 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) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# 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 |