adp-downloader 0.2.1 → 0.2.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +64 -0
- data/Gemfile.lock +1 -1
- data/bin/adp-downloader +2 -1
- data/lib/adp-downloader.rb +10 -26
- data/lib/adp-downloader/config.rb +27 -20
- data/lib/adp-downloader/downloader.rb +3 -4
- data/lib/adp-downloader/http_client.rb +0 -2
- data/lib/adp-downloader/runner.rb +41 -0
- data/lib/adp-downloader/statement/pay_statement.rb +0 -2
- data/lib/adp-downloader/statement/tax_statement.rb +0 -2
- data/lib/adp-downloader/version.rb +1 -1
- metadata +4 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5e22d6a2d101c5fd813316d6eb144e30357be097
         | 
| 4 | 
            +
              data.tar.gz: a94fa0e54e3f023fb695d5dcdf7791ed73a81c04
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 1fe857e5187102d7e8d04061250b8b96ff9786453435f982b73b6677b84be04882e0b75e060eeeb87bfcb4fa237ce7a8fb2bd98c3963c9edd0698ea12e9d90d3
         | 
| 7 | 
            +
              data.tar.gz: 4d3973c4d8db0f06721345fb9d75f05d591703201dd19b52655adaa844de243560ca8c04eba2d2af723143ae8c7e04c01c9165f8fc689f7c9a30b2cf66319742
         | 
    
        data/CHANGELOG.md
    ADDED
    
    | @@ -0,0 +1,64 @@ | |
| 1 | 
            +
            Changelog
         | 
| 2 | 
            +
            =========
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            ## Unreleased
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            * -
         | 
| 7 | 
            +
             | 
| 8 | 
            +
             | 
| 9 | 
            +
            ## 0.2.1
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            * [88d8f76][] Add command line options to prevent output
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            [88d8f76]: ../../commit/88d8f76
         | 
| 14 | 
            +
             | 
| 15 | 
            +
             | 
| 16 | 
            +
            ## 0.2.1
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            * [#3][] Fixed bug with Tempfiles in older versions of ruby
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            [#3]: ../../issues/3
         | 
| 21 | 
            +
             | 
| 22 | 
            +
             | 
| 23 | 
            +
            ## 0.2.0
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            ### Breaking changes:
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            * [481f738][] Use PDF ID instead of JSON ID for file names
         | 
| 28 | 
            +
            * [8af8c55][] Add adjustment suffix to pay adjustment PDF files
         | 
| 29 | 
            +
            * [5fb1fb9][] Organize downloaded files by year
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            [481f738]: ../../commit/481f738
         | 
| 32 | 
            +
            [8af8c55]: ../../commit/8af8c55
         | 
| 33 | 
            +
            [5fb1fb9]: ../../commit/5fb1fb9
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            **WARNING**: Do not run `adp-downloader` in the same directory as `v.0.1.4`.
         | 
| 36 | 
            +
            Either move all old statements to a different directory or run it in a new
         | 
| 37 | 
            +
            directory.  Once all statements are downloaded, you can manually move
         | 
| 38 | 
            +
            previously downloaded old statements (those no longer available through the
         | 
| 39 | 
            +
            API) into the correct new directories.  The names of older statements will
         | 
| 40 | 
            +
            still have the old ID but since they're no longer available through the API,
         | 
| 41 | 
            +
            this should not cause any problems.
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            ### Other changes:
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            * [812fbfc][] Keep simple statement JSON info along with detailed JSON
         | 
| 46 | 
            +
            * [481f738][] Download pay and tax statements
         | 
| 47 | 
            +
            * [fdc5494][] Download pay statement JSON only when available
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            [812fbfc]: ../../commit/812fbfc
         | 
| 50 | 
            +
            [481f738]: ../../commit/481f738
         | 
| 51 | 
            +
            [fdc5494]: ../../commit/fdc5494
         | 
| 52 | 
            +
             | 
| 53 | 
            +
             | 
| 54 | 
            +
            ## 0.1.4
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            * [75bcbf9][] Use `.netrc` for storing credentials
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            [75bcbf9]: ../../commit/75bcbf9
         | 
| 59 | 
            +
             | 
| 60 | 
            +
             | 
| 61 | 
            +
            ## 0.1.3 [YANKED]
         | 
| 62 | 
            +
            ## 0.1.2 [YANKED]
         | 
| 63 | 
            +
            ## 0.1.1 [YANKED]
         | 
| 64 | 
            +
            ## 0.1.0 [YANKED]
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/bin/adp-downloader
    CHANGED
    
    
    
        data/lib/adp-downloader.rb
    CHANGED
    
    | @@ -1,26 +1,10 @@ | |
| 1 | 
            -
            require "adp-downloader/ | 
| 2 | 
            -
            require "adp-downloader/ | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
                  path = log_exception_to_file(e)
         | 
| 12 | 
            -
                  puts "An error ocurred: #{e}"
         | 
| 13 | 
            -
                  puts "Details were logged to #{path}"
         | 
| 14 | 
            -
                  exit 1
         | 
| 15 | 
            -
                end
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
              private
         | 
| 19 | 
            -
              def self.log_exception_to_file(e)
         | 
| 20 | 
            -
                file = Tempfile.new("adp-downloader-")
         | 
| 21 | 
            -
                file.puts(e)
         | 
| 22 | 
            -
                file.puts(e.backtrace)
         | 
| 23 | 
            -
                FileUtils.mv file.path, File.join("", "tmp")
         | 
| 24 | 
            -
                File.join("", "tmp", File.basename(file.path))
         | 
| 25 | 
            -
              end
         | 
| 26 | 
            -
            end
         | 
| 1 | 
            +
            require "adp-downloader/config.rb"
         | 
| 2 | 
            +
            require "adp-downloader/constants.rb"
         | 
| 3 | 
            +
            require "adp-downloader/downloader.rb"
         | 
| 4 | 
            +
            require "adp-downloader/http_client.rb"
         | 
| 5 | 
            +
            require "adp-downloader/runner"
         | 
| 6 | 
            +
            require "adp-downloader/runner.rb"
         | 
| 7 | 
            +
            require "adp-downloader/statement/statement.rb"
         | 
| 8 | 
            +
            require "adp-downloader/statement/pay_statement.rb"
         | 
| 9 | 
            +
            require "adp-downloader/statement/tax_statement.rb"
         | 
| 10 | 
            +
            require "adp-downloader/version.rb"
         | 
| @@ -1,31 +1,38 @@ | |
| 1 1 | 
             
            require "io/console"
         | 
| 2 2 | 
             
            require "netrc"
         | 
| 3 | 
            -
            require "adp-downloader/constants"
         | 
| 4 3 |  | 
| 5 4 | 
             
            module ADPDownloader
         | 
| 6 5 | 
             
              class Config
         | 
| 7 | 
            -
                 | 
| 8 | 
            -
                   | 
| 9 | 
            -
                end
         | 
| 6 | 
            +
                class << self
         | 
| 7 | 
            +
                  attr_writer :quiet
         | 
| 10 8 |  | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
                   | 
| 14 | 
            -
                end
         | 
| 9 | 
            +
                  def credentials
         | 
| 10 | 
            +
                    from_netrc or from_stdin
         | 
| 11 | 
            +
                  end
         | 
| 15 12 |  | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
                   | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 13 | 
            +
                  def quiet?
         | 
| 14 | 
            +
                    @quiet
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  private
         | 
| 18 | 
            +
                  def creds(username, password)
         | 
| 19 | 
            +
                    { username: username, password: password }
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  def from_netrc
         | 
| 23 | 
            +
                    n = Netrc.read
         | 
| 24 | 
            +
                    username, password = n[MACHINE_NAME]
         | 
| 25 | 
            +
                    creds(username, password) if username and password
         | 
| 26 | 
            +
                  end
         | 
| 21 27 |  | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 28 | 
            +
                  def from_stdin
         | 
| 29 | 
            +
                    print "Username: "
         | 
| 30 | 
            +
                    username = STDIN.gets.chomp
         | 
| 31 | 
            +
                    print "Password: "
         | 
| 32 | 
            +
                    password = STDIN.noecho(&:gets).chomp
         | 
| 33 | 
            +
                    puts
         | 
| 34 | 
            +
                    creds(username, password)
         | 
| 35 | 
            +
                  end
         | 
| 29 36 | 
             
                end
         | 
| 30 37 | 
             
              end
         | 
| 31 38 | 
             
            end
         | 
| @@ -1,8 +1,5 @@ | |
| 1 1 | 
             
            require "json"
         | 
| 2 2 | 
             
            require "parallel"
         | 
| 3 | 
            -
            require "adp-downloader/constants"
         | 
| 4 | 
            -
            require "adp-downloader/statement/pay_statement"
         | 
| 5 | 
            -
            require "adp-downloader/statement/tax_statement"
         | 
| 6 3 |  | 
| 7 4 | 
             
            module ADPDownloader
         | 
| 8 5 | 
             
              class Downloader
         | 
| @@ -40,18 +37,20 @@ module ADPDownloader | |
| 40 37 |  | 
| 41 38 | 
             
                def download_or_skip_statement(statement)
         | 
| 42 39 | 
             
                  if not downloaded? statement
         | 
| 43 | 
            -
                    puts "Saving #{statement.date} - #{statement.id}..."
         | 
| 40 | 
            +
                    puts "Saving #{statement.date} - #{statement.id}..." unless Config.quiet?
         | 
| 44 41 | 
             
                    download_statement_files(statement)
         | 
| 45 42 | 
             
                  end
         | 
| 46 43 | 
             
                end
         | 
| 47 44 |  | 
| 48 45 | 
             
                def get_all_pay_statements
         | 
| 46 | 
            +
                  puts "Downloading all pay statements..." unless Config.quiet?
         | 
| 49 47 | 
             
                  Parallel.each(pay_statements) do |statement|
         | 
| 50 48 | 
             
                    download_or_skip_statement(statement)
         | 
| 51 49 | 
             
                  end
         | 
| 52 50 | 
             
                end
         | 
| 53 51 |  | 
| 54 52 | 
             
                def get_all_tax_statements
         | 
| 53 | 
            +
                  puts "Downloading all tax statements..." unless Config.quiet?
         | 
| 55 54 | 
             
                  Parallel.each(tax_statements) do |statement|
         | 
| 56 55 | 
             
                    download_or_skip_statement(statement)
         | 
| 57 56 | 
             
                  end
         | 
| @@ -0,0 +1,41 @@ | |
| 1 | 
            +
            require "tempfile"
         | 
| 2 | 
            +
            require "optparse"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module ADPDownloader
         | 
| 5 | 
            +
              class Runner
         | 
| 6 | 
            +
                def initialize(arguments)
         | 
| 7 | 
            +
                  @arguments = arguments
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                def run
         | 
| 11 | 
            +
                  parse_options
         | 
| 12 | 
            +
                  begin
         | 
| 13 | 
            +
                    downloader = Downloader.new(HttpClient.new)
         | 
| 14 | 
            +
                    downloader.get_all_tax_statements
         | 
| 15 | 
            +
                    downloader.get_all_pay_statements
         | 
| 16 | 
            +
                  rescue Exception => e
         | 
| 17 | 
            +
                    path = log_exception_to_file(e)
         | 
| 18 | 
            +
                    puts "An error ocurred: #{e}"
         | 
| 19 | 
            +
                    puts "Details were logged to #{path}"
         | 
| 20 | 
            +
                    exit 1
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                private
         | 
| 25 | 
            +
                def log_exception_to_file(e)
         | 
| 26 | 
            +
                  file = Tempfile.new("adp-downloader-")
         | 
| 27 | 
            +
                  file.puts(e)
         | 
| 28 | 
            +
                  file.puts(e.backtrace)
         | 
| 29 | 
            +
                  FileUtils.mv file.path, File.join("", "tmp")
         | 
| 30 | 
            +
                  File.join("", "tmp", File.basename(file.path))
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                def parse_options
         | 
| 34 | 
            +
                  options = OptionParser.new
         | 
| 35 | 
            +
                  options.banner = "Usage: adp-downloader [options]"
         | 
| 36 | 
            +
                  options.on("-v", "--quiet", "Only display errors") { Config.quiet = true }
         | 
| 37 | 
            +
                  options.on("-h", "--help",  "Show this message")   { puts(options); exit }
         | 
| 38 | 
            +
                  options.parse!(@arguments)
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: adp-downloader
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Anderson Mesquita (andersonvom)
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017-01- | 
| 11 | 
            +
            date: 2017-01-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: mechanize
         | 
| @@ -103,6 +103,7 @@ extensions: [] | |
| 103 103 | 
             
            extra_rdoc_files: []
         | 
| 104 104 | 
             
            files:
         | 
| 105 105 | 
             
            - ".gitignore"
         | 
| 106 | 
            +
            - CHANGELOG.md
         | 
| 106 107 | 
             
            - Gemfile
         | 
| 107 108 | 
             
            - Gemfile.lock
         | 
| 108 109 | 
             
            - LICENSE.md
         | 
| @@ -116,6 +117,7 @@ files: | |
| 116 117 | 
             
            - lib/adp-downloader/constants.rb
         | 
| 117 118 | 
             
            - lib/adp-downloader/downloader.rb
         | 
| 118 119 | 
             
            - lib/adp-downloader/http_client.rb
         | 
| 120 | 
            +
            - lib/adp-downloader/runner.rb
         | 
| 119 121 | 
             
            - lib/adp-downloader/statement/pay_statement.rb
         | 
| 120 122 | 
             
            - lib/adp-downloader/statement/statement.rb
         | 
| 121 123 | 
             
            - lib/adp-downloader/statement/tax_statement.rb
         |