Class: ESMDl::Download

Inherits:
Object
  • Object
show all
Defined in:
lib/esmdl/download.rb

Instance Method Summary collapse

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