Sha256: 999c6325340c6b374b0c08a35cfcc023128abdd59c370d448b38a91307c00021
Contents?: true
Size: 1.41 KB
Versions: 2
Compression:
Stored size: 1.41 KB
Contents
require "httpi/adapter/httpclient" require "httpi/adapter/curb" require "httpi/adapter/net_http" module HTTPI # = HTTPI::Adapter # # Manages the adapter classes. Currently supports: # # * httpclient # * curb # * net/http module Adapter ADAPTERS = { :httpclient => HTTPClient, :curb => Curb, :net_http => NetHTTP } DEPENDENCIES = [ [:httpclient, ["httpclient"]], [:curb, ["curb"]], [:net_http, ["net/https", "net/ntlm_http"]] ] class << self def use=(adapter) @adapter = adapter.nil? ? nil : validate_adapter!(adapter) end def use @adapter ||= default_adapter end def load(adapter = nil) adapter = adapter ? validate_adapter!(adapter) : use [adapter, ADAPTERS[adapter]] end private def validate_adapter!(adapter) raise ArgumentError, "Invalid HTTPI adapter: #{adapter}" unless ADAPTERS[adapter] adapter end def default_adapter return :httpclient if defined?(::HTTPClient) return :curb if defined?(::Curl::Easy) return :net_http if defined?(::Net::HTTP) DEPENDENCIES.each do |(adapter, dependencies)| begin dependencies.each { |dependency| require dependency } return adapter rescue LoadError next end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
httpi-0.9.2 | lib/httpi/adapter.rb |
httpi-0.9.1 | lib/httpi/adapter.rb |