Class: ActiveZuora::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/active_zuora/connection.rb

Constant Summary collapse

WSDL =
File.expand_path('../../../wsdl/zuora.wsdl', __FILE__)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(configuration = {}) ⇒ Connection

Returns a new instance of Connection.


8
9
10
11
12
13
14
15
16
17
# File 'lib/active_zuora/connection.rb', line 8

def initialize(configuration={})
  # Store login credentials and create SOAP client.
  @username = configuration[:username]
  @password = configuration[:password]
  @session_timeout = configuration[:session_timeout] || 15.minutes
  @soap_client = Savon::Client.new do
    wsdl.document = configuration[:wsdl] || WSDL
    http.proxy = configuration[:http_proxy] if configuration[:http_proxy]
  end
end

Instance Attribute Details

#soap_clientObject (readonly)

Returns the value of attribute soap_client.


4
5
6
# File 'lib/active_zuora/connection.rb', line 4

def soap_client
  @soap_client
end

Instance Method Details

#loginObject


19
20
21
22
23
24
# File 'lib/active_zuora/connection.rb', line 19

def 
  # 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 }
  @soap_client.request(:login){ soap.body = body }[:login_response][:result][:session]
end

#request(*args, &block) ⇒ Object


26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/active_zuora/connection.rb', line 26

def request(*args, &block)
  # instance variables aren't available within the soap request block for some reason.
  header = { 'SessionHeader' => { 'session' => @session_id } }
  @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 = 
  request(*args, &block)
end