module HTTPI::Adapter

HTTPI::Adapter

Manages the adapter classes. Currently supports:

Constants

ADAPTERS
ADAPTER_CLASS_MAP
LOAD_ORDER

Attributes

client_setup_block[RW]

Public Class Methods

identify(adapter_class) click to toggle source
# File lib/httpi/adapter.rb, line 39
def identify(adapter_class)
  ADAPTER_CLASS_MAP[adapter_class]
end
load(adapter) click to toggle source
# File lib/httpi/adapter.rb, line 43
def load(adapter)
  adapter ||= use

  validate_adapter!(adapter)
  load_adapter(adapter)
  ADAPTERS[adapter][:class]
end
load_adapter(adapter) click to toggle source
# File lib/httpi/adapter.rb, line 51
def load_adapter(adapter)
  ADAPTERS[adapter][:deps].each do |dep|
    require dep
  end
end
register(name, adapter_class, deps) click to toggle source
# File lib/httpi/adapter.rb, line 20
def register(name, adapter_class, deps)
  ADAPTERS[name] = { :class => adapter_class, :deps => deps }
  ADAPTER_CLASS_MAP[adapter_class] = name
end
use() click to toggle source
# File lib/httpi/adapter.rb, line 33
def use
  @adapter ||= default_adapter
end
use=(adapter) click to toggle source
# File lib/httpi/adapter.rb, line 25
def use=(adapter)
  return @adapter = nil if adapter.nil?

  validate_adapter! adapter
  load_adapter adapter
  @adapter = adapter
end

Private Class Methods

default_adapter() click to toggle source
# File lib/httpi/adapter.rb, line 63
def default_adapter
  LOAD_ORDER.each do |adapter|
    begin
      load_adapter adapter
      return adapter
    rescue LoadError
      next
    end
  end
end
validate_adapter!(adapter) click to toggle source
# File lib/httpi/adapter.rb, line 59
def validate_adapter!(adapter)
  raise ArgumentError, "Invalid HTTPI adapter: #{adapter}" unless ADAPTERS[adapter]
end