module Excon

def defaults

Returns:
  • (Hash) - defaults for Excon connections
def defaults
  @defaults ||= {
    :chunk_size         => CHUNK_SIZE || DEFAULT_CHUNK_SIZE,
    :ciphers            => 'HIGH:!SSLv2:!aNULL:!eNULL:!3DES',
    :connect_timeout    => 60,
    :debug_request      => false,
    :debug_response     => false,
    :headers            => {
      'User-Agent' => USER_AGENT
    },
    :idempotent         => false,
    :instrumentor_name  => 'excon',
    :middlewares        => [
      Excon::Middleware::ResponseParser,
      Excon::Middleware::Expects,
      Excon::Middleware::Idempotent,
      Excon::Middleware::Instrumentor,
      Excon::Middleware::Mock
    ],
    :mock               => false,
    :nonblock           => true,
    :omit_default_port  => false,
    :persistent         => false,
    :read_timeout       => 60,
    :retry_limit        => DEFAULT_RETRY_LIMIT,
    :ssl_verify_peer    => true,
    :tcp_nodelay        => false,
    :uri_parser         => URI,
    :write_timeout      => 60
  }
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)
  # Respect Ruby's $VERBOSE setting, unless EXCON_DEBUG is set
  if !$VERBOSE.nil? || ENV['EXCON_DEBUG']
    $stderr.puts '[excon][WARNING] ' << warning << "\n#{ caller.join("\n") }"
  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] || Excon.defaults[:uri_parser]
  uri = uri_parser.parse(url)
  raise ArgumentError.new("Invalid URI: #{uri}") unless uri.scheme
  params = {
    :host       => uri.host,
    :path       => uri.path,
    :port       => uri.port,
    :query      => uri.query,
    :scheme     => uri.scheme,
    :user       => (Utils.unescape_uri(uri.user) if uri.user),
    :password   => (Utils.unescape_uri(uri.password) if uri.password)
  }.merge!(params)
  Excon::Connection.new(params)
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)

Parameters:
  • response (Hash) -- params to return from matched request or block to call with params
  • request (Hash) -- params to match against, omitted params match all
def stub(request_params = {}, response_params = nil)
  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 block_given?
    if response_params
      raise(ArgumentError.new("stub requires either response_params OR a block"))
    else
      stub = [request_params, Proc.new]
    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 (Hash) -- 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
  @stubs ||= []
end

def unstub(request_params = {})

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

Parameters:
  • request (Hash) -- 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