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