class ActiveZuora::Connection

Constants

WSDL

Attributes

custom_header[RW]
soap_client[R]

Public Class Methods

new(configuration={}) click to toggle source
# File lib/active_zuora/connection.rb, line 9
def initialize(configuration={})
  # Store login credentials and create SOAP client.
  @username = configuration[:username]
  @password = configuration[:password]
  @soap_client = Savon::Client.new do
    wsdl.document = configuration[:wsdl] || WSDL
    http.proxy = configuration[:http_proxy] if configuration[:http_proxy]
  end
end

Public Instance Methods

login() click to toggle source
# File lib/active_zuora/connection.rb, line 19
def login
  # Returns a session_id upon success, raises an exception on failure.
  # Instance variables aren't available within the soap request block.
  body = { :username => @username, :password => @password }
  header = @custom_header
  @soap_client.request(:login) do
    soap.body = body
    soap.header = header
  end[:login_response][:result][:session]
end
request(*args) { |soap| ... } click to toggle source
# File lib/active_zuora/connection.rb, line 30
def request(*args, &block)
  # instance variables aren't available within the soap request block for some reason.
  header = { 'SessionHeader' => { 'session' => @session_id } }
  header.merge!(@custom_header) if @custom_header

  @soap_client.request(*args) do
    soap.header = header
    yield(soap)
  end
rescue Savon::SOAP::Fault => exception
  # Catch invalid sessions, and re-issue the request.
  raise unless exception.message =~ /INVALID_SESSION/
  @session_id = login
  request(*args, &block)
end