class Yardi::Validator::EmptyResponse

Ensure that the response contains data. Sometimes Yardi will respond with just the outer shell of XML. For an example, @see empty_response.xml. We will also raise an error if Yardi returns a completely empty response.

Attributes

action[R]
response[R]

Public Class Methods

new(action:, parsed_response:) click to toggle source

@param parsed_response [Hash<String, Object>] the XML response parsed

into a Hash

@param action [String] The SOAP action this response is for. Yardi's

responses have nodes whose names include the SOAP action for the
request that was made.
# File lib/yardi/validator/empty_response.rb, line 14
def initialize(action:, parsed_response:)
  @action = action
  @response = parsed_response
end

Public Instance Methods

validate!() click to toggle source

@raise [Yardi::Error::EmptyResponse] if the response is effectively

empty
# File lib/yardi/validator/empty_response.rb, line 21
def validate!
  return unless error?
  raise Error::EmptyResponse, 'Yardi response contains no Result node.'
end

Private Instance Methods

error?() click to toggle source
# File lib/yardi/validator/empty_response.rb, line 30
def error?
  return true if response.empty?

  envelope = response['soap:Envelope']
  return true if envelope.nil?

  body = envelope['soap:Body']
  # Fault responses will be handled by the FaultResponse validator
  return false unless body['soap:Fault'].nil?
  body["#{action}Response"]["#{action}Result"].nil?
end