class GoodData::LCM2::CollectDymanicScheduleParams

Constants

DESCRIPTION
PARAMS

Public Class Methods

call(params) click to toggle source
# File lib/gooddata/lcm/actions/collect_dynamic_schedule_params.rb, line 38
def call(params)
  return [] unless params.dynamic_params

  schedule_title_column = params.schedule_title_column&.downcase || 'schedule_title'
  client_id_column = params.client_id_column&.downcase || 'client_id'
  param_name_column = params.param_name_column&.downcase || 'param_name'
  param_value_column = params.param_value_column&.downcase || 'param_value'
  param_secure_column = params.param_secure_column&.downcase || 'param_secure'

  encryption_key = params.dynamic_params_encryption_key || ''
  exist_encryption_key = encryption_key.blank? ? false : true

  results = []

  input_source = params.dynamic_params.input_source
  data_source = GoodData::Helpers::DataSource.new(input_source)
  input_data = without_check(PARAMS, params) do
    File.open(data_source.realize(params), 'r:UTF-8')
  end

  schedule_params = {}
  schedule_hidden_params = {}
  exist_param_secure = false

  CSV.foreach(input_data, :headers => true, :return_headers => false, :header_converters => :downcase, :encoding => 'utf-8') do |row|
    is_param_secure = row[param_secure_column] == 'true'
    is_decrypt_secure_value = is_param_secure && exist_encryption_key ? true : false
    exist_param_secure = true if is_param_secure

    safe_to_print_row = row.to_hash
    safe_to_print_row[param_value_column] = '******' if is_param_secure
    GoodData.logger.debug("Processing row: #{safe_to_print_row}")
    results << safe_to_print_row

    client_id_column_value = row[client_id_column]
    client_id = client_id_column_value.blank? ? :all_clients : client_id_column_value

    schedule_title_column_value = row[schedule_title_column]
    schedule_name = schedule_title_column_value.blank? ? :all_schedules : schedule_title_column_value

    param_name = row[param_name_column]
    param_value = row[param_value_column]
    param_value = GoodData::Helpers.simple_decrypt(param_value, encryption_key) if is_decrypt_secure_value

    add_dynamic_param(is_param_secure ? schedule_hidden_params : schedule_params, client_id, schedule_name, param_name, param_value)
  end

  GoodData.logger.warn("dynamic_params_encryption_key parameter doesn't exist") if exist_param_secure && !exist_encryption_key

  {
    results: results,
    params: {
      schedule_params: schedule_params,
      schedule_hidden_params: schedule_hidden_params
    }
  }
end

Private Class Methods

add_dynamic_param(params, client_id, schedule_name, param_name, param_value) click to toggle source
# File lib/gooddata/lcm/actions/collect_dynamic_schedule_params.rb, line 98
def add_dynamic_param(params, client_id, schedule_name, param_name, param_value)
  params[client_id] ||= {}
  params[client_id][schedule_name] ||= {}
  params[client_id][schedule_name].merge!(param_name => param_value)
end