Sha256: c880ec6235efe8d842fd9500efdc4e3f04dc9287f525d69b82e7ec34df304b40

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

module AviraUpdateMirrors
  class Download

    include HTTParty
    default_timeout 10

    attr_reader :error, :response, :downloads_dir, :download_file_path

    def initialize(base_url, options = {})
      @base_url = base_url
      @base_dir = options[:base_dir] || Dir.pwd
      @downloads_dir = File.join(@base_dir, 'tmp', Time.now.strftime("%Y%m%d%H%M%S%L"))
      FileUtils.mkdir_p @downloads_dir
      @error = nil
      @download_file_path = nil

      self.class.base_uri @base_url
    end

    def perform(expand_url)
      @expand_url = expand_url.gsub("\\", "/")
      @error = nil
      @download_file_path = File.join(@downloads_dir, @expand_url)
      FileUtils.mkdir_p File.dirname(@download_file_path)
      begin
        @response = self.class.get(@expand_url)
      rescue Timeout::Error
        @error = 'timeout'
      else
        case @response.code
        when 200
          File.open(@download_file_path, "wb+") do |file|
            file.write @response.body
          end
        when 404
          @error = '404'
        when 500...600
          @error = '500'
        end
      end
    end

    def downloaded?
      !@error
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
avira_update_mirrors-0.1.0 lib/avira_update_mirrors/download.rb