Sha256: 1e8ce33f24dac9229c200cd0c7affe4799223d350e2965a9efb24b319831bf4a
Contents?: true
Size: 1.5 KB
Versions: 5
Compression:
Stored size: 1.5 KB
Contents
module HTTPI # = HTTPI::Adapter # # Manages the adapter classes. Currently supports: # # * httpclient # * curb # * em_http # * net/http module Adapter ADAPTERS = {} ADAPTER_CLASS_MAP = {} LOAD_ORDER = [:httpclient, :curb, :em_http, :excon, :http, :net_http, :net_http_persistent] class << self def register(name, adapter_class, deps) ADAPTERS[name] = { :class => adapter_class, :deps => deps } ADAPTER_CLASS_MAP[adapter_class] = name end def use=(adapter) return @adapter = nil if adapter.nil? validate_adapter! adapter load_adapter adapter @adapter = adapter end def use @adapter ||= default_adapter end attr_accessor :client_setup_block def identify(adapter_class) ADAPTER_CLASS_MAP[adapter_class] end def load(adapter) adapter ||= use validate_adapter!(adapter) load_adapter(adapter) ADAPTERS[adapter][:class] end def load_adapter(adapter) ADAPTERS[adapter][:deps].each do |dep| require dep end end private def validate_adapter!(adapter) raise ArgumentError, "Invalid HTTPI adapter: #{adapter}" unless ADAPTERS[adapter] end def default_adapter LOAD_ORDER.each do |adapter| begin load_adapter adapter return adapter rescue LoadError next end end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
httpi-4.0.4 | lib/httpi/adapter.rb |
httpi-4.0.3 | lib/httpi/adapter.rb |
httpi-4.0.2 | lib/httpi/adapter.rb |
httpi-4.0.1 | lib/httpi/adapter.rb |
httpi-3.0.2 | lib/httpi/adapter.rb |