easy_downloader 0.0.1.alpha → 0.0.2.alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +4 -1
 - data/Gemfile.lock +16 -0
 - data/Rakefile +1 -1
 - data/VERSION +1 -1
 - data/easy_downloader.gemspec +21 -4
 - data/lib/easy_downloader.rb +73 -0
 - data/lib/easy_downloader/ftp_downloader.rb +39 -0
 - data/lib/easy_downloader/http_downloader.rb +30 -0
 - data/lib/easy_downloader/options.rb +30 -0
 - data/lib/easy_downloader/result.rb +71 -0
 - data/lib/easy_downloader/sftp_downloader.rb +33 -0
 - data/spec/easy_downloader/options_spec.rb +26 -0
 - data/spec/spec_helper.rb +1 -0
 - metadata +76 -13
 - data/spec/easy_downloader_spec.rb +0 -7
 
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -1,13 +1,16 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            source "http://rubygems.org"
         
     | 
| 
       2 
2 
     | 
    
         
             
            # Add dependencies required to use your gem here.
         
     | 
| 
       3 
3 
     | 
    
         
             
            # Example:
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            gem "activesupport", "~> 3.0.3"
         
     | 
| 
      
 5 
     | 
    
         
            +
            gem 'net-sftp'
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
7 
     | 
    
         
             
            # Add dependencies to develop your gem here.
         
     | 
| 
       7 
8 
     | 
    
         
             
            # Include everything needed to run rake, tests, features, etc.
         
     | 
| 
       8 
9 
     | 
    
         
             
            group :development do
         
     | 
| 
      
 10 
     | 
    
         
            +
              gem 'ruby-debug'
         
     | 
| 
       9 
11 
     | 
    
         
             
              gem "rspec", "~> 2.1.0"
         
     | 
| 
       10 
12 
     | 
    
         
             
              gem "bundler", "~> 1.0.0"
         
     | 
| 
       11 
13 
     | 
    
         
             
              gem "jeweler", "~> 1.5.1"
         
     | 
| 
       12 
14 
     | 
    
         
             
              gem "rcov", ">= 0"
         
     | 
| 
      
 15 
     | 
    
         
            +
              gem 'yard'
         
     | 
| 
       13 
16 
     | 
    
         
             
            end
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,12 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            GEM
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: http://rubygems.org/
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
      
 4 
     | 
    
         
            +
                activesupport (3.0.3)
         
     | 
| 
      
 5 
     | 
    
         
            +
                columnize (0.3.2)
         
     | 
| 
       4 
6 
     | 
    
         
             
                diff-lcs (1.1.2)
         
     | 
| 
       5 
7 
     | 
    
         
             
                git (1.2.5)
         
     | 
| 
       6 
8 
     | 
    
         
             
                jeweler (1.5.2)
         
     | 
| 
       7 
9 
     | 
    
         
             
                  bundler (~> 1.0.0)
         
     | 
| 
       8 
10 
     | 
    
         
             
                  git (>= 1.2.5)
         
     | 
| 
       9 
11 
     | 
    
         
             
                  rake
         
     | 
| 
      
 12 
     | 
    
         
            +
                linecache (0.43)
         
     | 
| 
      
 13 
     | 
    
         
            +
                net-sftp (2.0.5)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  net-ssh (>= 2.0.9)
         
     | 
| 
      
 15 
     | 
    
         
            +
                net-ssh (2.0.23)
         
     | 
| 
       10 
16 
     | 
    
         
             
                rake (0.8.7)
         
     | 
| 
       11 
17 
     | 
    
         
             
                rcov (0.9.9)
         
     | 
| 
       12 
18 
     | 
    
         
             
                rspec (2.1.0)
         
     | 
| 
         @@ -17,12 +23,22 @@ GEM 
     | 
|
| 
       17 
23 
     | 
    
         
             
                rspec-expectations (2.1.0)
         
     | 
| 
       18 
24 
     | 
    
         
             
                  diff-lcs (~> 1.1.2)
         
     | 
| 
       19 
25 
     | 
    
         
             
                rspec-mocks (2.1.0)
         
     | 
| 
      
 26 
     | 
    
         
            +
                ruby-debug (0.10.4)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  columnize (>= 0.1)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  ruby-debug-base (~> 0.10.4.0)
         
     | 
| 
      
 29 
     | 
    
         
            +
                ruby-debug-base (0.10.4)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  linecache (>= 0.3)
         
     | 
| 
      
 31 
     | 
    
         
            +
                yard (0.6.1)
         
     | 
| 
       20 
32 
     | 
    
         | 
| 
       21 
33 
     | 
    
         
             
            PLATFORMS
         
     | 
| 
       22 
34 
     | 
    
         
             
              ruby
         
     | 
| 
       23 
35 
     | 
    
         | 
| 
       24 
36 
     | 
    
         
             
            DEPENDENCIES
         
     | 
| 
      
 37 
     | 
    
         
            +
              activesupport (~> 3.0.3)
         
     | 
| 
       25 
38 
     | 
    
         
             
              bundler (~> 1.0.0)
         
     | 
| 
       26 
39 
     | 
    
         
             
              jeweler (~> 1.5.1)
         
     | 
| 
      
 40 
     | 
    
         
            +
              net-sftp
         
     | 
| 
       27 
41 
     | 
    
         
             
              rcov
         
     | 
| 
       28 
42 
     | 
    
         
             
              rspec (~> 2.1.0)
         
     | 
| 
      
 43 
     | 
    
         
            +
              ruby-debug
         
     | 
| 
      
 44 
     | 
    
         
            +
              yard
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -15,7 +15,7 @@ Jeweler::Tasks.new do |gem| 
     | 
|
| 
       15 
15 
     | 
    
         
             
              gem.name = "easy_downloader"
         
     | 
| 
       16 
16 
     | 
    
         
             
              gem.homepage = "http://github.com/btelles/easy_downloader"
         
     | 
| 
       17 
17 
     | 
    
         
             
              gem.license = "MIT"
         
     | 
| 
       18 
     | 
    
         
            -
              gem.summary = %Q{ 
     | 
| 
      
 18 
     | 
    
         
            +
              gem.summary = %Q{A dead simple, one-method downloader, with friendly error messages}
         
     | 
| 
       19 
19 
     | 
    
         
             
              gem.description = %Q{ EasyDownloader reduces the amount of work required to setup and check for errors when downloading from another location. This 
         
     | 
| 
       20 
20 
     | 
    
         
             
                                  is useful when, for example, a client wants to you to pick a file up from their FTP, SFTP, or regular website on a nightly basis.
         
     | 
| 
       21 
21 
     | 
    
         
             
                                  EasyDownloader gives you a one-method means of downloading those files, returns with a friendly error message if it fails
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.0.2.alpha
         
     | 
    
        data/easy_downloader.gemspec
    CHANGED
    
    | 
         @@ -5,7 +5,7 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = %q{easy_downloader}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "0.0. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.0.2.alpha"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Bernardo Telles"]
         
     | 
| 
         @@ -30,16 +30,21 @@ Gem::Specification.new do |s| 
     | 
|
| 
       30 
30 
     | 
    
         
             
                "VERSION",
         
     | 
| 
       31 
31 
     | 
    
         
             
                "easy_downloader.gemspec",
         
     | 
| 
       32 
32 
     | 
    
         
             
                "lib/easy_downloader.rb",
         
     | 
| 
       33 
     | 
    
         
            -
                " 
     | 
| 
      
 33 
     | 
    
         
            +
                "lib/easy_downloader/ftp_downloader.rb",
         
     | 
| 
      
 34 
     | 
    
         
            +
                "lib/easy_downloader/http_downloader.rb",
         
     | 
| 
      
 35 
     | 
    
         
            +
                "lib/easy_downloader/options.rb",
         
     | 
| 
      
 36 
     | 
    
         
            +
                "lib/easy_downloader/result.rb",
         
     | 
| 
      
 37 
     | 
    
         
            +
                "lib/easy_downloader/sftp_downloader.rb",
         
     | 
| 
      
 38 
     | 
    
         
            +
                "spec/easy_downloader/options_spec.rb",
         
     | 
| 
       34 
39 
     | 
    
         
             
                "spec/spec_helper.rb"
         
     | 
| 
       35 
40 
     | 
    
         
             
              ]
         
     | 
| 
       36 
41 
     | 
    
         
             
              s.homepage = %q{http://github.com/btelles/easy_downloader}
         
     | 
| 
       37 
42 
     | 
    
         
             
              s.licenses = ["MIT"]
         
     | 
| 
       38 
43 
     | 
    
         
             
              s.require_paths = ["lib"]
         
     | 
| 
       39 
44 
     | 
    
         
             
              s.rubygems_version = %q{1.3.7}
         
     | 
| 
       40 
     | 
    
         
            -
              s.summary = %q{ 
     | 
| 
      
 45 
     | 
    
         
            +
              s.summary = %q{A dead simple, one-method downloader, with friendly error messages}
         
     | 
| 
       41 
46 
     | 
    
         
             
              s.test_files = [
         
     | 
| 
       42 
     | 
    
         
            -
                "spec/ 
     | 
| 
      
 47 
     | 
    
         
            +
                "spec/easy_downloader/options_spec.rb",
         
     | 
| 
       43 
48 
     | 
    
         
             
                "spec/spec_helper.rb"
         
     | 
| 
       44 
49 
     | 
    
         
             
              ]
         
     | 
| 
       45 
50 
     | 
    
         | 
| 
         @@ -48,21 +53,33 @@ Gem::Specification.new do |s| 
     | 
|
| 
       48 
53 
     | 
    
         
             
                s.specification_version = 3
         
     | 
| 
       49 
54 
     | 
    
         | 
| 
       50 
55 
     | 
    
         
             
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         
     | 
| 
      
 56 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<activesupport>, ["~> 3.0.3"])
         
     | 
| 
      
 57 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<net-sftp>, [">= 0"])
         
     | 
| 
      
 58 
     | 
    
         
            +
                  s.add_development_dependency(%q<ruby-debug>, [">= 0"])
         
     | 
| 
       51 
59 
     | 
    
         
             
                  s.add_development_dependency(%q<rspec>, ["~> 2.1.0"])
         
     | 
| 
       52 
60 
     | 
    
         
             
                  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
       53 
61 
     | 
    
         
             
                  s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
         
     | 
| 
       54 
62 
     | 
    
         
             
                  s.add_development_dependency(%q<rcov>, [">= 0"])
         
     | 
| 
      
 63 
     | 
    
         
            +
                  s.add_development_dependency(%q<yard>, [">= 0"])
         
     | 
| 
       55 
64 
     | 
    
         
             
                else
         
     | 
| 
      
 65 
     | 
    
         
            +
                  s.add_dependency(%q<activesupport>, ["~> 3.0.3"])
         
     | 
| 
      
 66 
     | 
    
         
            +
                  s.add_dependency(%q<net-sftp>, [">= 0"])
         
     | 
| 
      
 67 
     | 
    
         
            +
                  s.add_dependency(%q<ruby-debug>, [">= 0"])
         
     | 
| 
       56 
68 
     | 
    
         
             
                  s.add_dependency(%q<rspec>, ["~> 2.1.0"])
         
     | 
| 
       57 
69 
     | 
    
         
             
                  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
       58 
70 
     | 
    
         
             
                  s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
         
     | 
| 
       59 
71 
     | 
    
         
             
                  s.add_dependency(%q<rcov>, [">= 0"])
         
     | 
| 
      
 72 
     | 
    
         
            +
                  s.add_dependency(%q<yard>, [">= 0"])
         
     | 
| 
       60 
73 
     | 
    
         
             
                end
         
     | 
| 
       61 
74 
     | 
    
         
             
              else
         
     | 
| 
      
 75 
     | 
    
         
            +
                s.add_dependency(%q<activesupport>, ["~> 3.0.3"])
         
     | 
| 
      
 76 
     | 
    
         
            +
                s.add_dependency(%q<net-sftp>, [">= 0"])
         
     | 
| 
      
 77 
     | 
    
         
            +
                s.add_dependency(%q<ruby-debug>, [">= 0"])
         
     | 
| 
       62 
78 
     | 
    
         
             
                s.add_dependency(%q<rspec>, ["~> 2.1.0"])
         
     | 
| 
       63 
79 
     | 
    
         
             
                s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
       64 
80 
     | 
    
         
             
                s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
         
     | 
| 
       65 
81 
     | 
    
         
             
                s.add_dependency(%q<rcov>, [">= 0"])
         
     | 
| 
      
 82 
     | 
    
         
            +
                s.add_dependency(%q<yard>, [">= 0"])
         
     | 
| 
       66 
83 
     | 
    
         
             
              end
         
     | 
| 
       67 
84 
     | 
    
         
             
            end
         
     | 
| 
       68 
85 
     | 
    
         | 
    
        data/lib/easy_downloader.rb
    CHANGED
    
    | 
         @@ -0,0 +1,73 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'easy_downloader/result'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'easy_downloader/options'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'easy_downloader/sftp_downloader'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'easy_downloader/ftp_downloader'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'easy_downloader/http_downloader'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'net/sftp'
         
     | 
| 
      
 7 
     | 
    
         
            +
            module EasyDownloader
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              class InvalidRemoteDirectory < Exception; end
         
     | 
| 
      
 10 
     | 
    
         
            +
              def self.download(*options)
         
     | 
| 
      
 11 
     | 
    
         
            +
                Downloader.new(*options)
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              class Downloader
         
     | 
| 
      
 15 
     | 
    
         
            +
                attr_reader :files, :result
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                include SftpDownloader
         
     | 
| 
      
 18 
     | 
    
         
            +
                include FtpDownloader
         
     | 
| 
      
 19 
     | 
    
         
            +
                include HttpDownloader
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                # Set up and immediately download files. The object has only two attributes:
         
     | 
| 
      
 23 
     | 
    
         
            +
                #   1. result
         
     | 
| 
      
 24 
     | 
    
         
            +
                #   2. files
         
     | 
| 
      
 25 
     | 
    
         
            +
                #
         
     | 
| 
      
 26 
     | 
    
         
            +
                #  @param [Hash, #options] options to use including host, password, source, and destination directories.%
         
     | 
| 
      
 27 
     | 
    
         
            +
                #    The available keys are:
         
     | 
| 
      
 28 
     | 
    
         
            +
                #
         
     | 
| 
      
 29 
     | 
    
         
            +
                #    :type =>  (required) The protocal used to download the file. One of :sftp, :ftp or :http.
         
     | 
| 
      
 30 
     | 
    
         
            +
                #    :host =>  (required) the domain of the remote server (source)
         
     | 
| 
      
 31 
     | 
    
         
            +
                #    :remote_path => a relative path to "cd" into when we first access the remote server
         
     | 
| 
      
 32 
     | 
    
         
            +
                #    :remote_pattern => a glob pattern that will select only the files we want to download.%
         
     | 
| 
      
 33 
     | 
    
         
            +
                #       see Ruby's core API if you are not familiar with this concept.
         
     | 
| 
      
 34 
     | 
    
         
            +
                #    :user =>  a username or login used for authenticating on the server
         
     | 
| 
      
 35 
     | 
    
         
            +
                #    :password =>  a password that, in combination with the user, will grant access to the remote server/host
         
     | 
| 
      
 36 
     | 
    
         
            +
                def initialize(*options)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  @options= Options.new(*options)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  download
         
     | 
| 
      
 39 
     | 
    
         
            +
                  @result = @options.result
         
     | 
| 
      
 40 
     | 
    
         
            +
                  @files  = @result.files_downloaded
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                private
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                def download
         
     | 
| 
      
 46 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 47 
     | 
    
         
            +
                    case @options.type
         
     | 
| 
      
 48 
     | 
    
         
            +
                    when :ftp
         
     | 
| 
      
 49 
     | 
    
         
            +
                      ftp_download(@options)
         
     | 
| 
      
 50 
     | 
    
         
            +
                    when :http
         
     | 
| 
      
 51 
     | 
    
         
            +
                      http_download(@options)
         
     | 
| 
      
 52 
     | 
    
         
            +
                    when :sftp
         
     | 
| 
      
 53 
     | 
    
         
            +
                      sftp_download(@options)
         
     | 
| 
      
 54 
     | 
    
         
            +
                    end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                  rescue Exception => e
         
     | 
| 
      
 57 
     | 
    
         
            +
                    @options.result.errors= <<-ERROR_MESSAGE
         
     | 
| 
      
 58 
     | 
    
         
            +
              There was a problem downloading from #{@options.host}.
         
     | 
| 
      
 59 
     | 
    
         
            +
              The error we got was:
         
     | 
| 
      
 60 
     | 
    
         
            +
                  #{e.message}
         
     | 
| 
      
 61 
     | 
    
         
            +
                  #{e.backtrace.inspect}
         
     | 
| 
      
 62 
     | 
    
         
            +
              We tried connecting with:
         
     | 
| 
      
 63 
     | 
    
         
            +
              host: #{@options.host}
         
     | 
| 
      
 64 
     | 
    
         
            +
              user: #{@options.user}
         
     | 
| 
      
 65 
     | 
    
         
            +
              pass: [filtered]
         
     | 
| 
      
 66 
     | 
    
         
            +
              directory_path: #{@options.remote_path}
         
     | 
| 
      
 67 
     | 
    
         
            +
              file_pattern: #{@options.remote_pattern}
         
     | 
| 
      
 68 
     | 
    
         
            +
              destination: #{@options.local_path}
         
     | 
| 
      
 69 
     | 
    
         
            +
                    ERROR_MESSAGE
         
     | 
| 
      
 70 
     | 
    
         
            +
                  end
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
              end
         
     | 
| 
      
 73 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,39 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'net/ftp'
         
     | 
| 
      
 2 
     | 
    
         
            +
            module EasyDownloader
         
     | 
| 
      
 3 
     | 
    
         
            +
              module FtpDownloader
         
     | 
| 
      
 4 
     | 
    
         
            +
                def ftp_download(options)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  download_count = options.download_count
         
     | 
| 
      
 6 
     | 
    
         
            +
                  result = options.result
         
     | 
| 
      
 7 
     | 
    
         
            +
                  result.started
         
     | 
| 
      
 8 
     | 
    
         
            +
                  Net::FTP.open(options.host,
         
     | 
| 
      
 9 
     | 
    
         
            +
                                options.user,
         
     | 
| 
      
 10 
     | 
    
         
            +
                                ftp_password_option(options.password)) do |ftp|
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 13 
     | 
    
         
            +
                      ftp.chdir(options.remote_path) 
         
     | 
| 
      
 14 
     | 
    
         
            +
                    rescue InvalidRemoteDirectory
         
     | 
| 
      
 15 
     | 
    
         
            +
                    end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                    files = ftp.nlst.select {|file_name| options.remote_pattern == '*' || file_name =~ Regexp.new(options.remote_pattern) }
         
     | 
| 
      
 18 
     | 
    
         
            +
                    puts files.join("\n")
         
     | 
| 
      
 19 
     | 
    
         
            +
                    total = files.size
         
     | 
| 
      
 20 
     | 
    
         
            +
                    result.found(files.size, files)
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                    files.each do |path|
         
     | 
| 
      
 23 
     | 
    
         
            +
                      result.starting_path(path)
         
     | 
| 
      
 24 
     | 
    
         
            +
                      ftp.get(path, "#{options.local_path}#{path}")
         
     | 
| 
      
 25 
     | 
    
         
            +
                      download_count += 1 
         
     | 
| 
      
 26 
     | 
    
         
            +
                      result.finished_path(path)
         
     | 
| 
      
 27 
     | 
    
         
            +
                      result.files_downloaded << "#{options.local_path}#{path}"
         
     | 
| 
      
 28 
     | 
    
         
            +
                    end
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                  result.downloaded(download_count)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  result.finished
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                def ftp_password_option(password)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  password ? password : nil
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module HttpDownloader
         
     | 
| 
      
 2 
     | 
    
         
            +
              def http_download(options)
         
     | 
| 
      
 3 
     | 
    
         
            +
                #result = options.result
         
     | 
| 
      
 4 
     | 
    
         
            +
                #result.started
         
     | 
| 
      
 5 
     | 
    
         
            +
                #Net::SFTP.start(options.host,
         
     | 
| 
      
 6 
     | 
    
         
            +
                #                options.user,
         
     | 
| 
      
 7 
     | 
    
         
            +
                #                password_option(options.password)) do |sftp|
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                #  files = sftp.dir.glob(options.remote_path, options.remote_pattern)
         
     | 
| 
      
 10 
     | 
    
         
            +
                #  total = files.size
         
     | 
| 
      
 11 
     | 
    
         
            +
                #  result.found(files.size, files.map(&:name))
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                #  files.map(&:name).each do |path|
         
     | 
| 
      
 14 
     | 
    
         
            +
                #    result.starting_path(path)
         
     | 
| 
      
 15 
     | 
    
         
            +
                #    download_count += 1 if sftp.download!("#{options.remote_path}#{path}", "#{options.destination_dir}#{path}")
         
     | 
| 
      
 16 
     | 
    
         
            +
                #    result.finished_path(path)
         
     | 
| 
      
 17 
     | 
    
         
            +
                #    files_downloaded << "#{options.destination_dir}#{path}"
         
     | 
| 
      
 18 
     | 
    
         
            +
                #  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                #end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                #result.downloaded(download_count)
         
     | 
| 
      
 22 
     | 
    
         
            +
                #result.finished
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def password_option(password)
         
     | 
| 
      
 26 
     | 
    
         
            +
                password ?
         
     | 
| 
      
 27 
     | 
    
         
            +
                  {:password => password} :
         
     | 
| 
      
 28 
     | 
    
         
            +
                  Hash.new
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'active_support/core_ext/array/extract_options'
         
     | 
| 
      
 2 
     | 
    
         
            +
            module EasyDownloader
         
     | 
| 
      
 3 
     | 
    
         
            +
              class Options
         
     | 
| 
      
 4 
     | 
    
         
            +
                attr_accessor :files, :successful, :result, :download_count,
         
     | 
| 
      
 5 
     | 
    
         
            +
                              :type, :host, :user, :password, :local_path,
         
     | 
| 
      
 6 
     | 
    
         
            +
                              :destination_dir, :remote_path, :remote_pattern
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                def initialize(*options)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @files = []
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @successful      = false
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @result          = Result.new
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @download_count = 0
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @options = options
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  options.extract_options!.each do |key, value|
         
     | 
| 
      
 16 
     | 
    
         
            +
                    send("#{key}=".to_sym, value) if respond_to?("#{key}=".to_sym)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                def type
         
     | 
| 
      
 21 
     | 
    
         
            +
                  @type.to_sym
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                def local_path
         
     | 
| 
      
 25 
     | 
    
         
            +
                  @local_path =~ /\/$/ ?
         
     | 
| 
      
 26 
     | 
    
         
            +
                    @local_path :
         
     | 
| 
      
 27 
     | 
    
         
            +
                    @local_path + '/'
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,71 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module EasyDownloader
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Result
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_accessor :errors, :files_downloaded
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @header, @started, @finished, @errors= ''
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @files_downloaded = []
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @progress = ["Progress:"]
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def to_s 
         
     | 
| 
      
 12 
     | 
    
         
            +
                  [@header,
         
     | 
| 
      
 13 
     | 
    
         
            +
                   found_list,
         
     | 
| 
      
 14 
     | 
    
         
            +
                   started_string,
         
     | 
| 
      
 15 
     | 
    
         
            +
                   progress,
         
     | 
| 
      
 16 
     | 
    
         
            +
                   @errors,
         
     | 
| 
      
 17 
     | 
    
         
            +
                   finished_string,
         
     | 
| 
      
 18 
     | 
    
         
            +
                   @footer].join("\n")
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                def found(total_found, file_names)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  @found = total_found
         
     | 
| 
      
 23 
     | 
    
         
            +
                  @header= "We found #{total_found} file(s) to download with the following names: \n"
         
     | 
| 
      
 24 
     | 
    
         
            +
                  @found_list = file_names
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def started
         
     | 
| 
      
 28 
     | 
    
         
            +
                  @started= Time.now
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def finished
         
     | 
| 
      
 32 
     | 
    
         
            +
                  @finished= Time.now
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                def downloaded(total)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @downloaded = total
         
     | 
| 
      
 37 
     | 
    
         
            +
                  @footer= "Downloaded #{total} file(s)"
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                def starting_path(path)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  @progress << "Starting to download #{path}"
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                def finished_path(path)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  @progress << "Finished downloading #{path}"
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                private 
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                def progress
         
     | 
| 
      
 51 
     | 
    
         
            +
                  @progress.join("\n")
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                def found_list
         
     | 
| 
      
 55 
     | 
    
         
            +
                  full_list = ''
         
     | 
| 
      
 56 
     | 
    
         
            +
                  @found_list.each_with_index do |file_name, index|
         
     | 
| 
      
 57 
     | 
    
         
            +
                    full_list += "##{(index+1).to_s}. #{file_name} "
         
     | 
| 
      
 58 
     | 
    
         
            +
                  end
         
     | 
| 
      
 59 
     | 
    
         
            +
                  full_list
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                def started_string
         
     | 
| 
      
 63 
     | 
    
         
            +
                  "Started downloading at #{@started}"
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                def finished_string
         
     | 
| 
      
 67 
     | 
    
         
            +
                  "Finished downloading at #{@finished}"
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,33 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module EasyDownloader
         
     | 
| 
      
 2 
     | 
    
         
            +
              module SftpDownloader
         
     | 
| 
      
 3 
     | 
    
         
            +
                def sftp_download(options)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  result = options.result
         
     | 
| 
      
 5 
     | 
    
         
            +
                  result.started
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                  Net::SFTP.start(options.host,
         
     | 
| 
      
 8 
     | 
    
         
            +
                                  options.user,
         
     | 
| 
      
 9 
     | 
    
         
            +
                                  sftp_password_option(options.password)) do |sftp|
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                    files = sftp.dir.glob(options.remote_path, options.remote_pattern)
         
     | 
| 
      
 12 
     | 
    
         
            +
                    total = files.size
         
     | 
| 
      
 13 
     | 
    
         
            +
                    result.found(files.size, files.map(&:name))
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    files.map(&:name).each do |path|
         
     | 
| 
      
 16 
     | 
    
         
            +
                      result.starting_path(path)
         
     | 
| 
      
 17 
     | 
    
         
            +
                      options.download_count += 1 if sftp.download!("#{options.remote_path}#{path}", "#{options.local_path}#{path}")
         
     | 
| 
      
 18 
     | 
    
         
            +
                      result.finished_path(path)
         
     | 
| 
      
 19 
     | 
    
         
            +
                      result.files_downloaded << "#{options.local_path}#{path}"
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                  result.downloaded(options.download_count)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  result.finished
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def sftp_password_option(password)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  password ?
         
     | 
| 
      
 29 
     | 
    
         
            +
                    {:password => password} :
         
     | 
| 
      
 30 
     | 
    
         
            +
                    Hash.new
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'easy_downloader/options'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            describe EasyDownloader::Options do
         
     | 
| 
      
 6 
     | 
    
         
            +
              context 'Accessors' do
         
     | 
| 
      
 7 
     | 
    
         
            +
               [:files, :successful, :result, :download_count,
         
     | 
| 
      
 8 
     | 
    
         
            +
                :host, :user, :password, :local_path,
         
     | 
| 
      
 9 
     | 
    
         
            +
                :destination_dir, :remote_path, :remote_pattern].each do |accessor|
         
     | 
| 
      
 10 
     | 
    
         
            +
                 specify {subject.should respond_to(accessor)}
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              describe "exposes options" do
         
     | 
| 
      
 15 
     | 
    
         
            +
                [:host, :user, :password, :remote_path, :remote_pattern, :local_path].each_with_index do |exposable_option, index|
         
     | 
| 
      
 16 
     | 
    
         
            +
                  it "exposes #{exposable_option}" do
         
     | 
| 
      
 17 
     | 
    
         
            +
                    option = EasyDownloader::Options.new(exposable_option => "hi there #{index}")
         
     | 
| 
      
 18 
     | 
    
         
            +
                    option.send(exposable_option).should == "hi there #{index}"
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
                it "exposes type as a symbol" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                  option = EasyDownloader::Options.new(:type => "hithere")
         
     | 
| 
      
 23 
     | 
    
         
            +
                  option.type.should == :hithere
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: easy_downloader
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 296151478
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: true
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 0
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
      
 9 
     | 
    
         
            +
              - 2
         
     | 
| 
       10 
10 
     | 
    
         
             
              - alpha
         
     | 
| 
       11 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 11 
     | 
    
         
            +
              version: 0.0.2.alpha
         
     | 
| 
       12 
12 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       13 
13 
     | 
    
         
             
            authors: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            - Bernardo Telles
         
     | 
| 
         @@ -21,6 +21,50 @@ default_executable: 
     | 
|
| 
       21 
21 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       22 
22 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       23 
23 
     | 
    
         
             
              version_requirements: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 24 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 25 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 26 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 27 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 28 
     | 
    
         
            +
                    hash: 1
         
     | 
| 
      
 29 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 30 
     | 
    
         
            +
                    - 3
         
     | 
| 
      
 31 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 32 
     | 
    
         
            +
                    - 3
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: 3.0.3
         
     | 
| 
      
 34 
     | 
    
         
            +
              requirement: *id001
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 37 
     | 
    
         
            +
              name: activesupport
         
     | 
| 
      
 38 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 39 
     | 
    
         
            +
              version_requirements: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 40 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 41 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 42 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 43 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 44 
     | 
    
         
            +
                    hash: 3
         
     | 
| 
      
 45 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 46 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 47 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 48 
     | 
    
         
            +
              requirement: *id002
         
     | 
| 
      
 49 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 50 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 51 
     | 
    
         
            +
              name: net-sftp
         
     | 
| 
      
 52 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 53 
     | 
    
         
            +
              version_requirements: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 54 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 55 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 56 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 57 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 58 
     | 
    
         
            +
                    hash: 3
         
     | 
| 
      
 59 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 60 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 62 
     | 
    
         
            +
              requirement: *id003
         
     | 
| 
      
 63 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 64 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 65 
     | 
    
         
            +
              name: ruby-debug
         
     | 
| 
      
 66 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 67 
     | 
    
         
            +
              version_requirements: &id004 !ruby/object:Gem::Requirement 
         
     | 
| 
       24 
68 
     | 
    
         
             
                none: false
         
     | 
| 
       25 
69 
     | 
    
         
             
                requirements: 
         
     | 
| 
       26 
70 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -31,12 +75,12 @@ dependencies: 
     | 
|
| 
       31 
75 
     | 
    
         
             
                    - 1
         
     | 
| 
       32 
76 
     | 
    
         
             
                    - 0
         
     | 
| 
       33 
77 
     | 
    
         
             
                    version: 2.1.0
         
     | 
| 
       34 
     | 
    
         
            -
              requirement: * 
     | 
| 
      
 78 
     | 
    
         
            +
              requirement: *id004
         
     | 
| 
       35 
79 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
80 
     | 
    
         
             
              type: :development
         
     | 
| 
       37 
81 
     | 
    
         
             
              name: rspec
         
     | 
| 
       38 
82 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       39 
     | 
    
         
            -
              version_requirements: & 
     | 
| 
      
 83 
     | 
    
         
            +
              version_requirements: &id005 !ruby/object:Gem::Requirement 
         
     | 
| 
       40 
84 
     | 
    
         
             
                none: false
         
     | 
| 
       41 
85 
     | 
    
         
             
                requirements: 
         
     | 
| 
       42 
86 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -47,12 +91,12 @@ dependencies: 
     | 
|
| 
       47 
91 
     | 
    
         
             
                    - 0
         
     | 
| 
       48 
92 
     | 
    
         
             
                    - 0
         
     | 
| 
       49 
93 
     | 
    
         
             
                    version: 1.0.0
         
     | 
| 
       50 
     | 
    
         
            -
              requirement: * 
     | 
| 
      
 94 
     | 
    
         
            +
              requirement: *id005
         
     | 
| 
       51 
95 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       52 
96 
     | 
    
         
             
              type: :development
         
     | 
| 
       53 
97 
     | 
    
         
             
              name: bundler
         
     | 
| 
       54 
98 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       55 
     | 
    
         
            -
              version_requirements: & 
     | 
| 
      
 99 
     | 
    
         
            +
              version_requirements: &id006 !ruby/object:Gem::Requirement 
         
     | 
| 
       56 
100 
     | 
    
         
             
                none: false
         
     | 
| 
       57 
101 
     | 
    
         
             
                requirements: 
         
     | 
| 
       58 
102 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -63,12 +107,12 @@ dependencies: 
     | 
|
| 
       63 
107 
     | 
    
         
             
                    - 5
         
     | 
| 
       64 
108 
     | 
    
         
             
                    - 1
         
     | 
| 
       65 
109 
     | 
    
         
             
                    version: 1.5.1
         
     | 
| 
       66 
     | 
    
         
            -
              requirement: * 
     | 
| 
      
 110 
     | 
    
         
            +
              requirement: *id006
         
     | 
| 
       67 
111 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       68 
112 
     | 
    
         
             
              type: :development
         
     | 
| 
       69 
113 
     | 
    
         
             
              name: jeweler
         
     | 
| 
       70 
114 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       71 
     | 
    
         
            -
              version_requirements: & 
     | 
| 
      
 115 
     | 
    
         
            +
              version_requirements: &id007 !ruby/object:Gem::Requirement 
         
     | 
| 
       72 
116 
     | 
    
         
             
                none: false
         
     | 
| 
       73 
117 
     | 
    
         
             
                requirements: 
         
     | 
| 
       74 
118 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -77,10 +121,24 @@ dependencies: 
     | 
|
| 
       77 
121 
     | 
    
         
             
                    segments: 
         
     | 
| 
       78 
122 
     | 
    
         
             
                    - 0
         
     | 
| 
       79 
123 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       80 
     | 
    
         
            -
              requirement: * 
     | 
| 
      
 124 
     | 
    
         
            +
              requirement: *id007
         
     | 
| 
       81 
125 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       82 
126 
     | 
    
         
             
              type: :development
         
     | 
| 
       83 
127 
     | 
    
         
             
              name: rcov
         
     | 
| 
      
 128 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 129 
     | 
    
         
            +
              version_requirements: &id008 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 130 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 131 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 132 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 133 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 134 
     | 
    
         
            +
                    hash: 3
         
     | 
| 
      
 135 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 136 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 137 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 138 
     | 
    
         
            +
              requirement: *id008
         
     | 
| 
      
 139 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 140 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 141 
     | 
    
         
            +
              name: yard
         
     | 
| 
       84 
142 
     | 
    
         
             
            description: " EasyDownloader reduces the amount of work required to setup and check for errors when downloading from another location. This \n                      is useful when, for example, a client wants to you to pick a file up from their FTP, SFTP, or regular website on a nightly basis.\n                      EasyDownloader gives you a one-method means of downloading those files, returns with a friendly error message if it fails\n                      (geared at cron job notifications), or returns an array of file names it downloaded."
         
     | 
| 
       85 
143 
     | 
    
         
             
            email: btelles@gmail.com
         
     | 
| 
       86 
144 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -101,7 +159,12 @@ files: 
     | 
|
| 
       101 
159 
     | 
    
         
             
            - VERSION
         
     | 
| 
       102 
160 
     | 
    
         
             
            - easy_downloader.gemspec
         
     | 
| 
       103 
161 
     | 
    
         
             
            - lib/easy_downloader.rb
         
     | 
| 
       104 
     | 
    
         
            -
            -  
     | 
| 
      
 162 
     | 
    
         
            +
            - lib/easy_downloader/ftp_downloader.rb
         
     | 
| 
      
 163 
     | 
    
         
            +
            - lib/easy_downloader/http_downloader.rb
         
     | 
| 
      
 164 
     | 
    
         
            +
            - lib/easy_downloader/options.rb
         
     | 
| 
      
 165 
     | 
    
         
            +
            - lib/easy_downloader/result.rb
         
     | 
| 
      
 166 
     | 
    
         
            +
            - lib/easy_downloader/sftp_downloader.rb
         
     | 
| 
      
 167 
     | 
    
         
            +
            - spec/easy_downloader/options_spec.rb
         
     | 
| 
       105 
168 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       106 
169 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       107 
170 
     | 
    
         
             
            homepage: http://github.com/btelles/easy_downloader
         
     | 
| 
         @@ -138,7 +201,7 @@ rubyforge_project: 
     | 
|
| 
       138 
201 
     | 
    
         
             
            rubygems_version: 1.3.7
         
     | 
| 
       139 
202 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       140 
203 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       141 
     | 
    
         
            -
            summary:  
     | 
| 
      
 204 
     | 
    
         
            +
            summary: A dead simple, one-method downloader, with friendly error messages
         
     | 
| 
       142 
205 
     | 
    
         
             
            test_files: 
         
     | 
| 
       143 
     | 
    
         
            -
            - spec/ 
     | 
| 
      
 206 
     | 
    
         
            +
            - spec/easy_downloader/options_spec.rb
         
     | 
| 
       144 
207 
     | 
    
         
             
            - spec/spec_helper.rb
         
     |