Module: MelissaData::WebSmart::ResponseProcessor

Included in:
Client
Defined in:
lib/melissa_data/web_smart/response_processor.rb

Constant Summary collapse

CODE_TYPES =
[:property, :address]

Instance Method Summary collapse

Instance Method Details

#codes(response, resp_type) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/melissa_data/web_smart/response_processor.rb', line 22

def codes(response, resp_type)
  case resp_type
  when 'property'
    response[:result][:code].split(",")
  when 'address'
    response[:results].split(",")
  end
end

#codes_for(codes, resp_type, code_type) ⇒ Object



16
17
18
19
20
# File 'lib/melissa_data/web_smart/response_processor.rb', line 16

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_codesObject



35
36
37
38
# File 'lib/melissa_data/web_smart/response_processor.rb', line 35

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) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/melissa_data/web_smart/response_processor.rb', line 31

def has_error_codes?(codes)
  !codes.select { |code| error_codes.include? code.to_sym }.empty?
end

#process(response, resp_type) ⇒ Object



7
8
9
10
11
12
13
14
# 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') }
  else
    response.merge!(success: codes_for(codes, resp_type, 'success'))
  end
end