module MelissaData::WebSmart::ResponseProcessor

Constants

CODE_TYPES

Public Instance Methods

codes(response, resp_type) click to toggle source
# File lib/melissa_data/web_smart/response_processor.rb, line 31
def codes(response, resp_type)
  case resp_type
  when 'property'
    response[:records].first[:results].split(',')
  when 'address'
    response[:records].first[:results].split(',')
  end
end
codes_for(codes, resp_type, code_type) click to toggle source
# File lib/melissa_data/web_smart/response_processor.rb, line 19
def codes_for(codes, resp_type, code_type)
  codes.map do |code|
    YAML.load(File.read("config/#{resp_type}_#{code_type}_codes.yml")).values.first[code.to_s]
  end.compact
end
error_codes() click to toggle source
# File lib/melissa_data/web_smart/response_processor.rb, line 44
def error_codes
  error_code_strings = CODE_TYPES.map { |t| File.read("config/#{t}_error_codes.yml") }
  error_code_strings.map { |c| YAML.load(c) }.flat_map { |code| code.values.first.keys.map(&:to_sym) }
end
has_error_codes?(codes) click to toggle source
# File lib/melissa_data/web_smart/response_processor.rb, line 40
def has_error_codes?(codes)
  !codes.select { |code| error_codes.include? code.to_sym }.empty?
end
map_codes_for(codes, resp_type, code_type) click to toggle source
# File lib/melissa_data/web_smart/response_processor.rb, line 25
def map_codes_for(codes, resp_type, code_type)
  codes.each_with_object([]) do |code, res|
    res << { code: code.to_s, description: YAML.load(File.read("config/#{resp_type}_#{code_type}_codes.yml")).values.first[code.to_s] }
  end.compact
end
process(response, resp_type) click to toggle source
# File lib/melissa_data/web_smart/response_processor.rb, line 7
def process(response, resp_type)
  codes = codes(response, resp_type)
  if has_error_codes?(codes)
    {
      errors: codes_for(codes, resp_type, 'error'),
      error_codes: map_codes_for(codes, resp_type, 'error')
    }
  else
    response.merge!(success: codes_for(codes, resp_type, 'success'))
  end
end