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