module Excon

def defaults

Returns:
  • (Hash) - defaults for Excon connections
def defaults
  @defaults ||= DEFAULTS
end

def defaults=(new_defaults)

Returns:
  • (Hash) - defaults for Excon connections
def defaults=(new_defaults)
  @defaults = new_defaults
end

def display_warning(warning)

def display_warning(warning)
  # Show warning if $VERBOSE or ENV['EXCON_DEBUG'] is set
  if $VERBOSE || ENV['EXCON_DEBUG']
    $stderr.puts "[excon][WARNING] #{warning}\n#{ caller.join("\n") }"
  end
  if @raise_on_warnings
    raise Error::Warning.new(warning)
  end
end

def mock

Status of mocking
def mock
  display_warning('Excon#mock is deprecated, use Excon.defaults[:mock] instead.')
  self.defaults[:mock]
end

def mock=(new_mock)

true returns a value from stubs or raises
false is the default and works as expected
Change the status of mocking
def mock=(new_mock)
  display_warning('Excon#mock is deprecated, use Excon.defaults[:mock]= instead.')
  self.defaults[:mock] = new_mock
end

def new(url, params = {})

Returns:
  • (Connection) - A new Excon::Connection instance

Parameters:
  • params (Hash) -- One or more option params to set on the Connection instance
  • url (String) -- The destination URL

Other tags:
    See: Connection#initialize -
def new(url, params = {})
  uri_parser = params[:uri_parser] || defaults[:uri_parser]
  uri = uri_parser.parse(url)
  if params[:path]
    uri_parser.parse(params[:path])
  end
  unless uri.scheme
    raise ArgumentError.new("Invalid URI: #{uri}")
  end
  params = {
    :host       => uri.host,
    :hostname   => uri.hostname,
    :path       => uri.path,
    :port       => uri.port,
    :query      => uri.query,
    :scheme     => uri.scheme
  }.merge(params)
  if uri.password
    params[:password] = Utils.unescape_uri(uri.password)
  end
  if uri.user
    params[:user] = Utils.unescape_uri(uri.user)
  end
  Excon::Connection.new(params)
end

def set_raise_on_warnings!(should_raise)

def set_raise_on_warnings!(should_raise)
  @raise_on_warnings = should_raise
end

def ssl_ca_path

Returns:
  • (String) - The filesystem path to the SSL Certificate Authority
def ssl_ca_path
  display_warning('Excon#ssl_ca_path is deprecated, use Excon.defaults[:ssl_ca_path] instead.')
  self.defaults[:ssl_ca_path]
end

def ssl_ca_path=(new_ssl_ca_path)

Returns:
  • (String) - The filesystem path to the SSL Certificate Authority
def ssl_ca_path=(new_ssl_ca_path)
  display_warning('Excon#ssl_ca_path= is deprecated, use Excon.defaults[:ssl_ca_path]= instead.')
  self.defaults[:ssl_ca_path] = new_ssl_ca_path
end

def ssl_verify_peer

Returns:
  • (true, false) - Whether or not to verify the peer's SSL certificate / chain
def ssl_verify_peer
  display_warning('Excon#ssl_verify_peer is deprecated, use Excon.defaults[:ssl_verify_peer] instead.')
  self.defaults[:ssl_verify_peer]
end

def ssl_verify_peer=(new_ssl_verify_peer)

Other tags:
    See: Excon#ssl_verify_peer - (attr_reader)
def ssl_verify_peer=(new_ssl_verify_peer)
  display_warning('Excon#ssl_verify_peer= is deprecated, use Excon.defaults[:ssl_verify_peer]= instead.')
  self.defaults[:ssl_verify_peer] = new_ssl_verify_peer
end

def stub(request_params = {}, response_params = nil, &block)

Parameters:
  • response_params (Hash) -- response params to return from matched request or block to call with params
  • request_params (Hash) -- request params to match against, omitted params match all
def stub(request_params = {}, response_params = nil, &block)
  if method = request_params.delete(:method)
    request_params[:method] = method.to_s.downcase.to_sym
  end
  if url = request_params.delete(:url)
    uri = URI.parse(url)
    request_params = {
      :host              => uri.host,
      :path              => uri.path,
      :port              => uri.port,
      :query             => uri.query,
      :scheme            => uri.scheme
    }.merge!(request_params)
    if uri.user || uri.password
      request_params[:headers] ||= {}
      user, pass = Utils.unescape_form(uri.user.to_s), Utils.unescape_form(uri.password.to_s)
      request_params[:headers]['Authorization'] ||= 'Basic ' + ["#{user}:#{pass}"].pack('m').delete(Excon::CR_NL)
    end
  end
  if request_params.has_key?(:headers)
    headers = Excon::Headers.new
    request_params[:headers].each do |key, value|
      headers[key] = value
    end
    request_params[:headers] = headers
  end
  if block_given?
    if response_params
      raise(ArgumentError.new("stub requires either response_params OR a block"))
    else
      stub = [request_params, block]
    end
  elsif response_params
    stub = [request_params, response_params]
  else
    raise(ArgumentError.new("stub requires either response_params OR a block"))
  end
  stubs.unshift(stub)
  stub
end

def stub_for(request_params={})

Returns:
  • (Hash) - response params to return from matched request or block to call with params

Parameters:
  • request_params (Hash) -- request params to match against, omitted params match all
def stub_for(request_params={})
  if method = request_params.delete(:method)
    request_params[:method] = method.to_s.downcase.to_sym
  end
  Excon.stubs.each do |stub, response_params|
    captures = { :headers => {} }
    headers_match = !stub.has_key?(:headers) || stub[:headers].keys.all? do |key|
      case value = stub[:headers][key]
      when Regexp
        if match = value.match(request_params[:headers][key])
          captures[:headers][key] = match.captures
        end
        match
      else
        value == request_params[:headers][key]
      end
    end
    non_headers_match = (stub.keys - [:headers]).all? do |key|
      case value = stub[key]
      when Regexp
        if match = value.match(request_params[key])
          captures[key] = match.captures
        end
        match
      else
        value == request_params[key]
      end
    end
    if headers_match && non_headers_match
      request_params[:captures] = captures
      return [stub, response_params]
    end
  end
  nil
end

def stubs

get a list of defined stubs
def stubs
  case Excon.defaults[:stubs]
  when :global
    @stubs ||= []
  when :local
    Thread.current[:_excon_stubs] ||= []
  end
end

def unstub(request_params = {})

Returns:
  • (Hash) - response params from deleted stub

Parameters:
  • request_params (Hash) -- request params to match against, omitted params match all
def unstub(request_params = {})
  stub = stub_for(request_params)
  Excon.stubs.delete_at(Excon.stubs.index(stub))
end