class Betfair::Client

Constants

DEFAULT_SETTINGS
OPERATIONS

Attributes

endpoint[RW]
persistent_headers[RW]
request_opts[RW]
settings[RW]

Public Class Methods

new(headers = {}, opts = {}, api_type = :rest) click to toggle source
# File lib/betfair/client.rb, line 23
def initialize(headers = {}, opts = {}, api_type = :rest)
  set_endpoint!(opts.delete(:endpoint))

  setting_opts         = opts.extract!(:retries, :adapter)
  @settings            = DEFAULT_SETTINGS.merge(setting_opts)
  @persistent_headers  = headers
  @request_opts        = opts

  extend_api(api_type)
end

Private Instance Methods

configure_request(opts = {}) click to toggle source
# File lib/betfair/client.rb, line 45
def configure_request(opts = {})
  opts[:headers] = persistent_headers.merge(opts[:headers] || {})

  HTTPI::Request.new(request_opts.merge(opts)).tap do |r|
    # It would be nice to have HTTPI do this itself but
    # HTTPI::Request#mass_assign doesn't merge auth fields
    if opts[:cert_file_path] && opts[:cert_key_file_path]
      r.auth.ssl.cert_key_file = opts[:cert_key_file_path]
      r.auth.ssl.cert_file     = opts[:cert_file_path]
    end
  end
end
extend_api(type) click to toggle source
# File lib/betfair/client.rb, line 70
def extend_api(type)
  case type
  when :rest
    extend API::REST
  when :rpc
    extend API::RPC
  else
    extend type
  end
end
set_endpoint!(endpoint) click to toggle source
# File lib/betfair/client.rb, line 58
def set_endpoint!(endpoint)
  @endpoint =
    case endpoint
    when :default, nil
      "api"
    when :aus
      "api-au"
    else
      raise RuntimeError, "invalid endpoint, please choose :default or :aus"
    end
end