class RealPage::Validator::RequestFault

Ensure there is no 'Fault' node in the response body

Attributes

request_name[R]
request_params[R]
response[R]

Public Class Methods

new(response, request_params = nil, request_name = nil) click to toggle source

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

Hash
# File lib/real_page/validator/request_fault.rb, line 10
def initialize(response, request_params = nil, request_name = nil)
  @response = response
  @request_params = request_params
  @request_name = request_name
end

Public Instance Methods

validate!() click to toggle source

@raise [RealPage::Error::RequestFault] if the response has a fault

# File lib/real_page/validator/request_fault.rb, line 17
def validate!
  return unless error?
  send_error_to_snowflake
  raise Error::RequestFault.new(error_message, fault_code, details)
end

Private Instance Methods

details() click to toggle source
# File lib/real_page/validator/request_fault.rb, line 31
def details
  return unless fault['detail']
  app_fault = fault['detail']['RPXApplicationFault']
  Error::RequestFault::Details.new(
    custom_message: app_fault['CustomMessage'],
    exception_message: app_fault['ExceptionMessage'],
    log_id: app_fault['LogId']
  )
end
error?() click to toggle source
# File lib/real_page/validator/request_fault.rb, line 41
def error?
  !fault.nil?
end
error_message() click to toggle source
# File lib/real_page/validator/request_fault.rb, line 52
def error_message
  fault['faultstring']['__content__'] if fault
end
fault() click to toggle source
# File lib/real_page/validator/request_fault.rb, line 27
def fault
  response['s:Envelope']['s:Body']['s:Fault']
end
fault_code() click to toggle source
# File lib/real_page/validator/request_fault.rb, line 45
def fault_code
  return unless fault
  code = fault['faultcode']
  code = code['__content__'] if code.is_a?(Hash)
  code.strip
end
send_error_to_snowflake() click to toggle source
# File lib/real_page/validator/request_fault.rb, line 56
def send_error_to_snowflake
  case request_name
  when 'GetLeasesByTrafficSource'
    send_move_in_report_error_to_snowflake
  when 'ProspectSearch'
    send_prospect_search_error_to_snowflake
  end
end
send_move_in_report_error_to_snowflake() click to toggle source
# File lib/real_page/validator/request_fault.rb, line 65
def send_move_in_report_error_to_snowflake
  Utils::SnowflakeEventTracker.track_pms_resident_event(
    import_resident_id: request_params[:import_id] || '',
    api_name: request_name,
    resident_type: 'PRIMARY',
    request_params: request_params,
    phones_count: 0,
    unit_name: '',
    error: error_message
  )
end
send_prospect_error_to_snowflake() click to toggle source
# File lib/real_page/validator/request_fault.rb, line 94
def send_prospect_error_to_snowflake
  Utils::SnowflakeEventTracker.track_pms_prospect_event(
    resident_type: 'PRIMARY',
    request_params: request_params,
    error: error_message
  )
end
send_prospect_search_error_to_snowflake() click to toggle source
# File lib/real_page/validator/request_fault.rb, line 77
def send_prospect_search_error_to_snowflake
  send_roommate_error_to_snowflake
  send_prospect_error_to_snowflake
end
send_roommate_error_to_snowflake() click to toggle source
# File lib/real_page/validator/request_fault.rb, line 82
def send_roommate_error_to_snowflake
  Utils::SnowflakeEventTracker.track_pms_resident_event(
    import_resident_id: request_params[:import_id] || '',
    api_name: request_name,
    resident_type: 'ROOMMATE',
    request_params: request_params,
    phones_count: 0,
    unit_name: '',
    error: error_message
  )
end