class Trusona::Mappers::BaseMapper
A starting point for specific resource mappers
Attributes
custom_mappings[RW]
resource[RW]
Public Instance Methods
map(response, existing = {})
click to toggle source
# File lib/trusona/mappers/base_mapper.rb, line 11 def map(response, existing = {}) raise ArgumentError if response_invalid?(response) raise ArgumentError if existing_invalid?(existing) raise if existing.nil? parsed_response = response.to_h if parsed_response.is_a?(Array) parsed_response.map { |r| map_item(r, existing) }.compact else map_item(parsed_response, existing) end end
Private Instance Methods
existing_invalid?(existing)
click to toggle source
# File lib/trusona/mappers/base_mapper.rb, line 67 def existing_invalid?(existing) return true unless existing.respond_to?(:to_h) false end
map_custom_fields(response)
click to toggle source
# File lib/trusona/mappers/base_mapper.rb, line 42 def map_custom_fields(response) return response if custom_mappings.nil? || custom_mappings.empty? custom_mappings.each do |original_key, new_key| value = response.delete(original_key) response[new_key] = value end response end
map_item(item, existing)
click to toggle source
# File lib/trusona/mappers/base_mapper.rb, line 28 def map_item(item, existing) return nil if item.nil? || item.empty? item = normalize_keys(item) item = merge_existing_state(item, existing.to_h) item = map_custom_fields(item) (resource || Trusona::Resources::BaseResource).send(:new, item) end
merge_existing_state(response, existing)
click to toggle source
# File lib/trusona/mappers/base_mapper.rb, line 38 def merge_existing_state(response, existing) existing.to_h.compact.merge(response) end
resource_invalid?(resource)
click to toggle source
# File lib/trusona/mappers/base_mapper.rb, line 60 def resource_invalid?(resource) return true if resource.nil? return true unless resource.respond_to?(:new) false end
response_invalid?(response)
click to toggle source
# File lib/trusona/mappers/base_mapper.rb, line 53 def response_invalid?(response) return true if response.nil? return true unless response.respond_to?(:to_h) false end