class RealPage::DocumentParser::Base

Base class for parsing RealPage responses. Subclasses must implement parse_body and can optionally override validator_classes to add more validation than just the default

Constants

DEFAULT_VALIDATOR_CLASSES

Attributes

request_name[R]
request_params[R]

Public Class Methods

new(request_params: nil, request_name: nil) click to toggle source

@param xml [String] the XML response from the request @option param request_params [Object] the request parameter @return [Object] the parsed object(s) from the rsesponse @raise [RealPage::Error::Base] if the response is invalid

# File lib/real_page/document_parser/base.rb, line 20
def initialize(request_params: nil, request_name: nil)
  @request_params = request_params
  @request_name = request_name
end

Public Instance Methods

parse(xml) click to toggle source
# File lib/real_page/document_parser/base.rb, line 25
def parse(xml)
  parsed = MultiXml.parse(xml)
  [*DEFAULT_VALIDATOR_CLASSES, *validator_classes].each do |klass|
    klass.new(parsed, request_params, request_name).validate!
  end
  parse_body(parsed['s:Envelope']['s:Body'])
end

Private Instance Methods

parse_body(body) click to toggle source

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

into a Hash

@return [Object] the parsed object(s) from the rsesponse @raise [RealPage::Error::Base] if the response is invalid

# File lib/real_page/document_parser/base.rb, line 41
def parse_body(body)
  raise NotImplementedError,
        "#{self.class.name} must implement #{__method__}"
end
validator_classes() click to toggle source
# File lib/real_page/document_parser/base.rb, line 46
def validator_classes
  []
end