Sha256: 47b97c025f015a0a2c725092c82f41e05265c3d0f05543227832e06040e4ded5

Contents?: true

Size: 1.19 KB

Versions: 2

Compression:

Stored size: 1.19 KB

Contents

module Downer
  class WriteFailed < StandardError; end
  class BadUrl < StandardError; end
  class MalformedManifest < StandardError; end
  class NoManifestFileGiven < StandardError; end
  class NoTargetDirectoryGiven < StandardError; end
  class URLSourceDoesNotExist < StandardError; end
  
  class DownloadManager
    
    attr_accessor :file_manifest, :target_directory, :output
    attr_reader :urls
    
    def initialize(url_source, target_directory, output)
      @file_manifest, @target_directory, @output = url_source, target_directory, output
      dir_last_char_is_slash = (@target_directory[-1,1] == '/')
      @target_directory = @target_directory + '/' unless dir_last_char_is_slash
      @urls = []
      raise URLSourceDoesNotExist unless File.exists?(@file_manifest) 
      get_urls      
    end
    
    def start
      raise WriteFailed unless File.writable?(@target_directory)

      @output.puts "Starting download on #{@urls.size} files"
      worker = DownloadWorker.new(@urls, @target_directory, @output)
      worker.start
    end
    
    protected
    
      def get_urls
        f = File.open(@file_manifest, 'r')
        f.each_line { |line| @urls << line.chomp }
      end
    
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
downer-0.2.2 lib/downer/download_manager.rb
downer-0.1.1 lib/downer/download_manager.rb