Sha256: acaae3cc9bcb941fc58449a19c65c768ef5fa6caa26a040a7300e12cb0e45903

Contents?: true

Size: 923 Bytes

Versions: 15

Compression:

Stored size: 923 Bytes

Contents

# encoding: utf-8

require "pathname"
require "desi/local_install"
require "desi/http_client"
require "uri"

module Desi
  class Downloader

    def initialize(opts = {})
      @destination_dir = Pathname(opts.fetch(:destination_dir, Desi::LocalInstall.new))
      @host = URI(opts.fetch(:host, 'https://download.elasticsearch.org/'))
      @client = opts.fetch(:http_client_factory, Desi::HttpClient).new(@host)
      @verbose = opts[:verbose]
    end

    def download!(version, opts = {})
      path = "/elasticsearch/elasticsearch/#{version.filename}"
      destination_name = @destination_dir.join File.basename(version.filename)

      raise "ERROR: File #{destination_name} already present!" if destination_name.exist?

      puts "  * fetching release #{version} from #{@host + path}" if @verbose

      File.open(destination_name, 'w') {|f| f << @client.get(path).body }

      destination_name
    end

  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
desi-0.7.1 lib/desi/downloader.rb
desi-0.7.0 lib/desi/downloader.rb
desi-0.6.9 lib/desi/downloader.rb
desi-0.6.8 lib/desi/downloader.rb
desi-0.6.7 lib/desi/downloader.rb
desi-0.6.6 lib/desi/downloader.rb
desi-0.6.5 lib/desi/downloader.rb
desi-0.6.4 lib/desi/downloader.rb
desi-0.6.2 lib/desi/downloader.rb
desi-0.6.1 lib/desi/downloader.rb
desi-0.6.0 lib/desi/downloader.rb
desi-0.5.0 lib/desi/downloader.rb
desi-0.4.0 lib/desi/downloader.rb
desi-0.3.0 lib/desi/downloader.rb
desi-0.2.9 lib/desi/downloader.rb