Sha256: df74ebe9c9085cd8a3a7b5ce78287c5817a234353327eedd27a3e6006f691ab5
Contents?: true
Size: 1.94 KB
Versions: 4
Compression:
Stored size: 1.94 KB
Contents
class Rack::Tracker::GoogleAnalytics < Rack::Tracker::Handler self.allowed_tracker_options = [:cookie_domain, :user_id] def initialize(env, options = {}) options[:explicit_pageview] = true if !options.has_key?(:explicit_pageview) super(env, options) end class Send < OpenStruct def initialize(attrs = {}) attrs.reverse_merge!(type: 'event') super end def write ['send', event].to_json.gsub(/\[|\]/, '') end def event { hitType: self.type }.merge(attributes.stringify_values).compact end def attributes Hash[to_h.slice(:category, :action, :label, :value).map { |k,v| [self.type.to_s + k.to_s.capitalize, v] }] end end class EnhancedEcommerce < OpenStruct def write hash = self.to_h label = hash[:label] attributes = hash.except(:label, :type).compact.stringify_values [ "ec:#{self.type}", label, attributes.empty? ? nil : attributes ].compact.to_json.gsub(/\[|\]/, '') end end class Ecommerce < OpenStruct def write attributes = self.to_h.except(:type).compact.stringify_values [ "ecommerce:#{self.type}", attributes ].to_json.gsub(/\[|\]/, '') end end class Parameter < OpenStruct include Rack::Tracker::JavaScriptHelper def write ['set', self.to_h.to_a].flatten.map { |v| %Q{'#{j(v)}'} }.join ', ' end end def tracker options[:tracker].respond_to?(:call) ? options[:tracker].call(env) : options[:tracker] end def ecommerce_events events.select {|e| e.kind_of?(Ecommerce) } end def enhanced_ecommerce_events events.select {|e| e.kind_of?(EnhancedEcommerce) } end def pageview_url_script options[:pageview_url_script] || 'window.location.pathname + window.location.search' end private def tracker_option_key(key) key.to_s.camelize(:lower).to_sym end def tracker_option_value(value) value.to_s end end
Version data entries
4 entries across 4 versions & 1 rubygems