class Neo4j::RakeTasks::Download

Public Class Methods

new(url) click to toggle source
# File lib/neo4j/rake_tasks/download.rb, line 7
def initialize(url)
  @url = url
end

Public Instance Methods

exists?() click to toggle source
# File lib/neo4j/rake_tasks/download.rb, line 11
def exists?
  status = head(@url).code.to_i
  (200...300).cover?(status)
end
fetch(message) click to toggle source
# File lib/neo4j/rake_tasks/download.rb, line 16
def fetch(message)
  require 'open-uri'
  open(@url,
       content_length_proc: lambda do |total|
         create_progress_bar(message, total) if total && total > 0
       end,
       progress_proc: method(:update_progress_bar)).read
end

Private Instance Methods

create_progress_bar(message, total) click to toggle source
# File lib/neo4j/rake_tasks/download.rb, line 27
def create_progress_bar(message, total)
  @progress_bar ||= ProgressBar.create title: message,
                                       total: total
end
head(url) click to toggle source
# File lib/neo4j/rake_tasks/download.rb, line 38
def head(url)
  uri = URI(url)
  Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
    return http.head("#{uri.path}?#{uri.query}")
  end
end
update_progress_bar(value) click to toggle source
# File lib/neo4j/rake_tasks/download.rb, line 32
def update_progress_bar(value)
  return unless @progress_bar
  value = @progress_bar.total >= value ? value : @progress_bar.total
  @progress_bar.progress = value
end