Class: Gillbus::V2::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/gillbus/v2/parser.rb

Instance Method Summary collapse

Instance Method Details

#parse_fields(raw_data, fields_settings) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/gillbus/v2/parser.rb', line 3

def parse_fields(raw_data, fields_settings)
  result = {}
  fields_settings.each do |field|
    if field[:type] == :translations_hash && raw_data["translations"]
      result[field[:name]] =
        fetch_from_translations(raw_data["translations"], field[:from])
      next
    end

    raw_value =
      if field[:from].is_a?(Hash)
        field[:from].map { |key, value| [key, raw_data[value]] }.to_h
      else
        raw_data[field[:from]]
      end

    if field[:enrich_with]
      raw_value = enrich_data(raw_value, raw_data, field[:enrich_with])
    end

    result[field[:name]] =
      if raw_value.nil?
        field[:default]
      else
        coerce_value(raw_value, field[:type])
      end
  end
  result
end