Sha256: 1964843c5dd6cb7b6a6061fe0efa503362980188a074bb8360f43ca92d14a163
Contents?: true
Size: 1.43 KB
Versions: 4
Compression:
Stored size: 1.43 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, :net_http] 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 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
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
httpi-2.0.2 | lib/httpi/adapter.rb |
httpi-2.0.1 | lib/httpi/adapter.rb |
httpi-2.0.0 | lib/httpi/adapter.rb |
httpi-2.0.0.rc1 | lib/httpi/adapter.rb |