Class: Inforouter::Responses::Base

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

Overview

A base infoRouter SOAP response.

Direct Known Subclasses

Document, Documents, Folder, Folders, Generic, Users

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(savon_response) ⇒ Base

Returns a new instance of Base.

Parameters:

  • savon_response (Savon::Response)


9
10
11
12
# File 'lib/inforouter/responses/base.rb', line 9

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

Instance Attribute Details

#rawObject

Raw response.



6
7
8
# File 'lib/inforouter/responses/base.rb', line 6

def raw
  @raw
end

Class Method Details

.error_message(value) ⇒ Object

Location of the error message in the SOAP XML.



21
22
23
# File 'lib/inforouter/responses/base.rb', line 21

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

.parse(savon_response) ⇒ Object

Parse a SOAP response.

Parameters:

  • savon_response (Savon::Response)


28
29
30
# File 'lib/inforouter/responses/base.rb', line 28

def parse(savon_response)
  new(savon_response)
end

.parse_datetime(date) ⇒ DateTime

Parameters:

  • date (String)

Returns:

  • (DateTime)


60
61
62
63
64
# File 'lib/inforouter/responses/base.rb', line 60

def parse_datetime(date)
  DateTime.strptime("#{date} #{DateTime.now.zone}", "%Y-%m-%d %H:%M:%S %Z")
  rescue ArgumentError
    nil
end

.response_success(value) ⇒ Object

Location of the response in the SOAP XML.



16
17
18
# File 'lib/inforouter/responses/base.rb', line 16

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

.set_dsl(key, value) ⇒ Object



51
52
53
54
55
# File 'lib/inforouter/responses/base.rb', line 51

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:

  • match (String)

    XML path to match.



36
37
38
39
40
41
42
43
44
# File 'lib/inforouter/responses/base.rb', line 36

def match(chain)
  current_value = raw
  chain.split('/').each do |key|
    current_value = current_value[key.to_sym]
    next if current_value
    fail Inforouter::Errors::UnexpectedSOAPResponse.new(raw, key, chain)
  end
  current_value
end