Sha256: 5fd83d168d025f6a4bd899160aeac58b17995a60522a225d990bdb3756ed26f9
Contents?: true
Size: 1.28 KB
Versions: 1
Compression:
Stored size: 1.28 KB
Contents
# encoding: utf-8 require 'uri' require 'net/http' module TTY module File DownloadError = Class.new(StandardError) class DownloadFile attr_reader :uri, :dest_path, :limit DEFAULT_REDIRECTS = 3 # @options # def initialize(url, dest_path, options = {}) @uri = URI.parse(url) @dest_path = dest_path @limit = options.fetch(:limit) { DEFAULT_REDIRECTS } end # Download a file # # @api public def call download(uri, dest_path, limit) end private # @api private def download(uri, path, limit) raise DownloadError, 'Redirect limit reached!' if limit.zero? content = '' Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http| http.request_get(uri.request_uri) do |response| case response when Net::HTTPSuccess response.read_body do |seg| content << seg end when Net::HTTPRedirection download(URI.parse(response['location']), path, limit - 1) else response.error! end end end content end end # DownloadFile end # File end # TTY
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tty-file-0.6.0 | lib/tty/file/download_file.rb |