Class: TaxCloud::Responses::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/tax_cloud/responses/base.rb

Overview

A base TaxCloud SOAP response.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(savon_response) ⇒ Base

Parameters

savon_response

Response from a SOAP API call.



12
13
14
15
# File 'lib/tax_cloud/responses/base.rb', line 12

def initialize(savon_response)
  @raw = savon_response.to_hash
  parse!
end

Instance Attribute Details

#rawObject

Raw response.



8
9
10
# File 'lib/tax_cloud/responses/base.rb', line 8

def raw
  @raw
end

Class Method Details

.error_message(value) ⇒ Object

Parameters

value

Location of the error message in the SOAP XML.



26
27
28
# File 'lib/tax_cloud/responses/base.rb', line 26

def error_message(value)
  set_dsl(:error_message, value)
end

.error_number(value) ⇒ Object

Parameters

value

Location of the error number in the SOAP XML.



32
33
34
# File 'lib/tax_cloud/responses/base.rb', line 32

def error_number(value)
  set_dsl(:error_number, value)
end

.parse(savon_response) ⇒ Object

Parse a SOAP response.

Parameters

savon_response

SOAP response.



40
41
42
# File 'lib/tax_cloud/responses/base.rb', line 40

def parse(savon_response)
  new(savon_response)
end

.response_type(value) ⇒ Object

Parameters

value

Location of the response type in the SOAP XML.



20
21
22
# File 'lib/tax_cloud/responses/base.rb', line 20

def response_type(value)
  set_dsl(:response_type, value)
end

.set_dsl(key, value) ⇒ Object



65
66
67
68
69
# File 'lib/tax_cloud/responses/base.rb', line 65

def set_dsl(key, value)
  self.dsl ||= {}
  self.dsl[key] = value
  self.dsl
end

Instance Method Details

#match(chain) ⇒ Object

Match an element in the SOAP response.

Parameters

chain

XML path to match.



49
50
51
52
53
54
55
56
57
58
# File 'lib/tax_cloud/responses/base.rb', line 49

def match(chain)
  current_value = raw
  chain.split('/').each do |key|
    current_value = current_value[key.to_sym]
    next if current_value

    raise TaxCloud::Errors::UnexpectedSoapResponse.new(raw, key, chain)
  end
  current_value
end