Sha256: 87b9ec47d5993456183c581ce699b113a187a4a4f42189c7c9e76cd4baf8e063
Contents?: true
Size: 1.24 KB
Versions: 3
Compression:
Stored size: 1.24 KB
Contents
require "net/http" module DNN class DNN_DownloadError < DNN_Error; end class Downloader def self.download(url, dir_path = nil) unless dir_path Dir.mkdir("#{__dir__}/downloads") unless Dir.exist?("#{__dir__}/downloads") dir_path = "#{__dir__}/downloads" end Downloader.new(url).download(dir_path) rescue => ex raise DNN_DownloadError.new(ex.message) end def initialize(url) @url = url *, @fqdn, @path = *url.match(%r`https?://(.+?)(/.+)`) end def download(dir_path) puts %`download "#{@url}"` buf = "" Net::HTTP.start(@fqdn) do |http| content_length = http.head(@path).content_length http.get(@path) do |body_segment| buf << body_segment log = "\r" 40.times do |i| if i < buf.size * 40 / content_length log << "=" elsif i == buf.size * 40 / content_length log << ">" else log << "_" end end log << " #{buf.size}/#{content_length}" print log end puts "" end file_name = @path.match(%r`.+/(.+)`)[1] File.binwrite("#{dir_path}/#{file_name}", buf) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ruby-dnn-0.10.4 | lib/dnn/downloader.rb |
ruby-dnn-0.10.3 | lib/dnn/downloader.rb |
ruby-dnn-0.10.2 | lib/dnn/downloader.rb |