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
- #codes(response, resp_type) ⇒ Object
- #codes_for(codes, resp_type, code_type) ⇒ Object
- #error_codes ⇒ Object
- #has_error_codes?(codes) ⇒ Boolean
- #map_codes_for(codes, resp_type, code_type) ⇒ Object
- #process(response, resp_type) ⇒ Object
Instance Method Details
#codes(response, resp_type) ⇒ Object
31 32 33 34 35 36 37 38 |
# 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) ⇒ Object
19 20 21 22 23 |
# 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 ⇒ Object
44 45 46 47 |
# 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) ⇒ Boolean
40 41 42 |
# 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) ⇒ Object
25 26 27 28 29 |
# 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) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# 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 |