class TrakioClient::Identify

Public Instance Methods

check_companies(companies) click to toggle source
# File lib/trakio_client/identify.rb, line 59
def check_companies companies
  unless companies.all?{ |x| x.is_a?(Hash) } && companies.all?{ |x| x.include? :company_id }
    raise Exceptions::InvalidProperty.new('The `companies` property must be an array of hashes each with a value for `company_id`')
  end
end
check_parameters(distinct_id, properties) click to toggle source
# File lib/trakio_client/identify.rb, line 50
def check_parameters distinct_id, properties
  unless properties.is_a?(Hash)
    raise Exceptions::InvalidParameter.new("The `properties` parameter must be a hash.")
  end
  unless distinct_id
    raise Exceptions::MissingParameter.new('The `distinct_id` parameter must be provided.')
  end
end
process_companies(company_id, properties) click to toggle source
# File lib/trakio_client/identify.rb, line 19
def process_companies company_id, properties

  # String company should be moved to company_name
  if properties[:company].is_a? String
    properties[:company_name] = properties.delete :company
  end

  # Company must be an array
  [:company, :companies].each do |x|
    properties[x] ||= []
    unless properties[x].is_a?(Array)
      properties[x] = [properties[x]]
    end
  end

  # Merge companies and company
  properties[:company] += properties.delete(:companies) || []

  check_companies properties[:company]

  # Inject current company
  if company_id && properties[:company].none?{ |x| x[:company_id] == company_id }
    properties[:company] << { company_id: company_id }
  end

  # Clean up company
  properties.delete(:company) if properties[:company].empty?

  properties
end
run(p = {}) click to toggle source
# File lib/trakio_client/identify.rb, line 4
def run p = {}
  properties = p[:properties] || {}
  distinct_id = p[:distinct_id] || self.distinct_id
  company_id = p[:company_id] || self.company_id
  check_parameters distinct_id, properties
  properties = process_companies company_id, properties

  params = {
    distinct_id: distinct_id,
    properties: properties
  }

  send_request 'identify', params
end