prepare_params

in lib/facebook_ads/ad_objects/helpers/custom_audience_helpers.rb [60:106]


    def prepare_params(data,
                       schema,
                       app_ids:     nil,
                       page_ids:    nil,
                       pre_hashed:  false,
                       namespace:   nil,
                       session:     nil,
                       data_source: nil)

      unless schema.is_a?(Array) || schema.split(',').length > 1
        
        schema = schema.upcase
        unless is_valid_single_key?(schema) || is_combinational_key?(schema)
          raise InvalidParameterError, "#{schema} is not a valid schema"
        end

        data = pre_hashed ? data : data.map { |entry| generate_hash(entry, schema)}
        is_raw = !is_combinational_key?(schema)
      else
        
        schema = schema.split(',') unless schema.is_a?(Array)

        data = data.map do |row|
          raise 'Schema size and data size mismatch' if row.length != schema.length

          row.each_with_index.map do |val, idx|
            pre_hashed ? val : generate_hash(val, schema[idx])
          end
        end

        is_raw = !(schema.map { |s| is_combinational_key?(s) }.any?)
      end

      {
        payload: {
          schema: schema,
          data: data,
          is_raw: is_raw,
          app_ids: app_ids,
          page_ids: page_ids,
          data_source: data_source,
        }.compact,
        namespace: namespace,
        session: session,
      }.compact
    end