Sha256: 79c72c91ca5515a0b289275511a040b6aad7ee15a7e7eb44364ea4ff56b61a85
Contents?: true
Size: 1.92 KB
Versions: 3
Compression:
Stored size: 1.92 KB
Contents
module TrakioClient class Identify < EndPoint 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 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 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 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
trakio-ruby-0.2.3 | lib/trakio_client/identify.rb |
trakio-ruby-0.2.2 | lib/trakio_client/identify.rb |
trakio-ruby-0.2.1 | lib/trakio_client/identify.rb |