Sha256: a291b242cf5c434437813b948bbe42b53a9c32ca80b73a264e89ef4285b32e01

Contents?: true

Size: 1.61 KB

Versions: 7

Compression:

Stored size: 1.61 KB

Contents

module Mixpanel::Event
  EVENT_PROPERTIES = %w{initial_referrer initial_referring_domain search_engine os browser referrer referring_domain}
  TRACK_URL = 'http://api.mixpanel.com/track/'
  IMPORT_URL = 'http://api.mixpanel.com/import/'

  def track(event, properties={}, options={})
    track_event event, properties, options, TRACK_URL
  end

  def tracking_pixel(event, properties={}, options={})
    build_url event, properties, options.merge(:url => TRACK_URL, :img => true)
  end

  def import(event, properties={}, options={})
    track_event event, properties, options, IMPORT_URL
  end

  def append_track(event, properties={})
    append 'track', event, track_properties(properties, false)
  end

  protected

  def track_event(event, properties, options, default_url)
    default = {:url => default_url, :async => @async, :api_key => @api_key}
    url = build_url(event, properties, default.merge(options))
    parse_response request(url, options[:async])
  end

  def track_properties(properties, include_token=true)
    default = {:time => Time.now, :ip => ip}
    properties = default.merge(properties)

    properties.merge!(:token => @token) if include_token
    properties_hash(properties, EVENT_PROPERTIES)
  end

  def build_event(event, properties)
    { :event => event, :properties => properties_hash(properties, EVENT_PROPERTIES) }
  end

  def build_url event, properties, options
    data = build_event event, track_properties(properties)
    url = "#{options[:url]}?data=#{encoded_data(data)}"
    url << "&api_key=#{options[:api_key]}" if options.fetch(:api_key, nil)
    url << "&img=1" if options[:img]
    url
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
mixpanel-4.0.1 lib/mixpanel/event.rb
mixpanel-4.0.0 lib/mixpanel/event.rb
mixpanel-3.6.2 lib/mixpanel/event.rb
mixpanel-3.5.2 lib/mixpanel/event.rb
mixpanel-3.5.1 lib/mixpanel/event.rb
mixpanel-3.5.0 lib/mixpanel/event.rb
mixpanel-3.4.0 lib/mixpanel/event.rb