Sha256: cedcfd90f6c370468a17c13aa20e29fca7b2240913ced5931777ec18763b38d4

Contents?: true

Size: 632 Bytes

Versions: 3

Compression:

Stored size: 632 Bytes

Contents

require "open-uri"
require "open_uri_redirections"

require "anyfetch/file"
require "anyfetch/ftp"
require "anyfetch/http"
require "anyfetch/version"

module Anyfetch extend self
  def open(uri, options = {})
    uri = to_uri(uri)
    handler(uri, options).open
  end

  private

  def to_uri(uri)
    URI.parse(uri.to_s)
  end

  def handler(uri, options = {})
    scheme = uri.scheme || "file"

    klass =
      case scheme
      when "file"    then File
      when "ftp"     then FTP
      when /^https?/ then HTTP
      else
        raise "No handler for '#{scheme}' protocol."
      end

    klass.new(uri, options)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
anyfetch-0.1.5 lib/anyfetch.rb
anyfetch-0.1.4 lib/anyfetch.rb
anyfetch-0.1.3 lib/anyfetch.rb