1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-01 12:24:28 +01:00
fab-manager/lib/omni_auth/data_mapping/mapper.rb

48 lines
1.8 KiB
Ruby

# frozen_string_literal: true
module OmniAuth::DataMapping
# Build the data mapping for the given provider
module Mapper
extend ActiveSupport::Concern
included do
require 'sso_logger'
require_relative 'base'
include OmniAuth::DataMapping::Base
def mapped_info(mappings, raw_info)
logger = SsoLogger.new
@info ||= {}
logger.debug "[mapped_info] @info = #{@info.to_json}"
unless @info.size.positive?
mappings.each do |mapping|
raw_data = ::JsonPath.new(mapping.api_field).on(raw_info[mapping.api_endpoint.to_sym]).first
logger.debug "@parsed_info[#{local_sym(mapping)}] mapped from #{raw_data}"
@info[local_sym(mapping)] = if mapping.transformation
case mapping.transformation['type']
when 'integer'
map_transformation(mapping.transformation, raw_data)
when 'boolean'
map_boolean(mapping.transformation, raw_data)
when 'date'
map_date(mapping.transformation, raw_data)
when 'string'
map_transformation(mapping.transformation, raw_data)
else
# other unsupported transformation
raw_data
end
else
raw_data
end
end
end
@info
end
end
end
end