Sha256: 6b4da246307609369192d916f9ba5e2ec6058bed0597a0f2387d01c16abf599f

Contents?: true

Size: 696 Bytes

Versions: 1

Compression:

Stored size: 696 Bytes

Contents

require 'ruby-progressbar'

module FcrepoWrapper
  class Downloader
    def self.fetch_with_progressbar(url, output)
      pbar = SafeProgressBar.new(title: File.basename(url), total: nil, format: '%t: |%B| %p%% (%e )')
      open(url,
           content_length_proc: ->(bytes) { pbar.total = bytes },
           progress_proc: ->(bytes) { pbar.progress = bytes }) do |io|
        IO.copy_stream(io, output)
      end
    end

    class SafeProgressBar < ProgressBar::Base
      def progress=(new_progress)
        self.total = new_progress if total.to_i <= new_progress
        super
      end

      def total=(new_total)
        super if new_total && new_total > 0
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fcrepo_wrapper-0.9.0 lib/fcrepo_wrapper/downloader.rb