Class: Kameleoon::DataManager::VisitorData
- Inherits:
-
Object
- Object
- Kameleoon::DataManager::VisitorData
- Defined in:
- lib/kameleoon/data/manager/visitor.rb
Instance Attribute Summary collapse
-
#browser ⇒ Object
readonly
Returns the value of attribute browser.
-
#cookie ⇒ Object
Returns the value of attribute cookie.
-
#device ⇒ Object
readonly
Returns the value of attribute device.
-
#geolocation ⇒ Object
readonly
Returns the value of attribute geolocation.
-
#kcs_heat ⇒ Object
Returns the value of attribute kcs_heat.
-
#last_activity_time ⇒ Object
Returns the value of attribute last_activity_time.
-
#legal_consent ⇒ Object
Returns the value of attribute legal_consent.
-
#mapping_identifier ⇒ Object
Returns the value of attribute mapping_identifier.
-
#mutex ⇒ Object
readonly
Returns the value of attribute mutex.
-
#operating_system ⇒ Object
readonly
Returns the value of attribute operating_system.
-
#user_agent ⇒ Object
Returns the value of attribute user_agent.
-
#visitor_visits ⇒ Object
Returns the value of attribute visitor_visits.
Instance Method Summary collapse
- #add_conversion(conversion) ⇒ Object
- #add_custom_data(custom_data, overwrite) ⇒ Object
- #add_page_view(page_view) ⇒ Object
- #add_page_view_visit(page_view_visit) ⇒ Object
- #add_variation(variation, overwrite) ⇒ Object
- #conversions ⇒ Object
- #count_sendable_data ⇒ Object
- #custom_data ⇒ Object
- #enumerate_sendable_data(&blk) ⇒ Object
-
#initialize ⇒ VisitorData
constructor
A new instance of VisitorData.
- #page_view_visits ⇒ Object
- #set_browser(browser, overwrite) ⇒ Object
- #set_device(device, overwrite) ⇒ Object
- #set_geolocation(geolocation, overwrite) ⇒ Object
- #set_operating_system(operating_system, overwrite) ⇒ Object
- #variations ⇒ Object
Constructor Details
#initialize ⇒ VisitorData
Returns a new instance of VisitorData.
210 211 212 213 214 215 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 210 def initialize Logging::KameleoonLogger.debug('CALL: VisitorData.new') @mutex = Concurrent::ReadWriteLock.new @legal_consent = false Logging::KameleoonLogger.debug('RETURN: VisitorData.new') end |
Instance Attribute Details
#browser ⇒ Object (readonly)
Returns the value of attribute browser.
206 207 208 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 206 def browser @browser end |
#cookie ⇒ Object
Returns the value of attribute cookie.
207 208 209 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 207 def @cookie end |
#device ⇒ Object (readonly)
Returns the value of attribute device.
206 207 208 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 206 def device @device end |
#geolocation ⇒ Object (readonly)
Returns the value of attribute geolocation.
206 207 208 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 206 def geolocation @geolocation end |
#kcs_heat ⇒ Object
Returns the value of attribute kcs_heat.
207 208 209 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 207 def kcs_heat @kcs_heat end |
#last_activity_time ⇒ Object
Returns the value of attribute last_activity_time.
207 208 209 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 207 def last_activity_time @last_activity_time end |
#legal_consent ⇒ Object
Returns the value of attribute legal_consent.
207 208 209 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 207 def @legal_consent end |
#mapping_identifier ⇒ Object
Returns the value of attribute mapping_identifier.
207 208 209 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 207 def mapping_identifier @mapping_identifier end |
#mutex ⇒ Object (readonly)
Returns the value of attribute mutex.
206 207 208 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 206 def mutex @mutex end |
#operating_system ⇒ Object (readonly)
Returns the value of attribute operating_system.
206 207 208 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 206 def @operating_system end |
#user_agent ⇒ Object
Returns the value of attribute user_agent.
207 208 209 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 207 def user_agent @user_agent end |
#visitor_visits ⇒ Object
Returns the value of attribute visitor_visits.
207 208 209 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 207 def visitor_visits @visitor_visits end |
Instance Method Details
#add_conversion(conversion) ⇒ Object
309 310 311 312 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 309 def add_conversion(conversion) @conversions = [] if @conversions.nil? @conversions.push(conversion) end |
#add_custom_data(custom_data, overwrite) ⇒ Object
278 279 280 281 282 283 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 278 def add_custom_data(custom_data, overwrite) @custom_data_map = {} if @custom_data_map.nil? if overwrite || !@custom_data_map.include?(custom_data.id) @custom_data_map[custom_data.id] = custom_data end end |
#add_page_view(page_view) ⇒ Object
285 286 287 288 289 290 291 292 293 294 295 296 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 285 def add_page_view(page_view) return if page_view.url.nil? || page_view.url.empty? @page_view_visits = {} if @page_view_visits.nil? visit = @page_view_visits[page_view.url] if visit.nil? visit = DataManager::PageViewVisit.new(page_view) else visit.overwrite(page_view) end @page_view_visits[page_view.url] = visit end |
#add_page_view_visit(page_view_visit) ⇒ Object
298 299 300 301 302 303 304 305 306 307 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 298 def add_page_view_visit(page_view_visit) @page_view_visits = {} if @page_view_visits.nil? visit = @page_view_visits[page_view_visit.page_view.url] if visit.nil? visit = page_view_visit @page_view_visits[page_view_visit.page_view.url] = visit else visit.merge(page_view_visit) end end |
#add_variation(variation, overwrite) ⇒ Object
267 268 269 270 271 272 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 267 def add_variation(variation, overwrite) @variations = {} if @variations.nil? if overwrite || !@variations.include?(variation.experiment_id) @variations[variation.experiment_id] = variation end end |
#conversions ⇒ Object
255 256 257 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 255 def conversions DataArrayStorage.new(@mutex, @conversions) end |
#count_sendable_data ⇒ Object
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 230 def count_sendable_data Logging::KameleoonLogger.debug('CALL: Visitor.count_sendable_data') count = 0 @mutex.with_read_lock do count += 1 unless @device.nil? count += 1 unless @browser.nil? count += 1 unless @geolocation.nil? count += 1 unless @operating_system.nil? count += @custom_data_map.size unless @custom_data_map.nil? count += @page_view_visits.size unless @page_view_visits.nil? count += @conversions.size unless @conversions.nil? count += @variations.size unless @variations.nil? end Logging::KameleoonLogger.debug('RETURN: VisitorData.count_sendable_data -> (count: %s)', count) count end |
#custom_data ⇒ Object
247 248 249 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 247 def custom_data DataMapStorage.new(@mutex, @custom_data_map) end |
#enumerate_sendable_data(&blk) ⇒ Object
217 218 219 220 221 222 223 224 225 226 227 228 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 217 def enumerate_sendable_data(&blk) blk.call(@device) unless @device.nil? blk.call(@browser) unless @browser.nil? blk.call(@operating_system) unless @operating_system.nil? blk.call(@geolocation) unless @geolocation.nil? @mutex.with_read_lock do @custom_data_map&.each { |_, cd| blk.call(cd) } @page_view_visits&.each { |_, pvv| blk.call(pvv.page_view) } @conversions&.each { |c| blk.call(c) } @variations&.each { |_, av| blk.call(av) } end end |
#page_view_visits ⇒ Object
251 252 253 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 251 def page_view_visits DataMapStorage.new(@mutex, @page_view_visits) end |
#set_browser(browser, overwrite) ⇒ Object
274 275 276 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 274 def set_browser(browser, overwrite) @browser = browser if overwrite || @browser.nil? end |
#set_device(device, overwrite) ⇒ Object
263 264 265 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 263 def set_device(device, overwrite) @device = device if overwrite || @device.nil? end |
#set_geolocation(geolocation, overwrite) ⇒ Object
314 315 316 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 314 def set_geolocation(geolocation, overwrite) @geolocation = geolocation if overwrite || @geolocation.nil? end |
#set_operating_system(operating_system, overwrite) ⇒ Object
318 319 320 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 318 def (, overwrite) @operating_system = if overwrite || @operating_system.nil? end |
#variations ⇒ Object
259 260 261 |
# File 'lib/kameleoon/data/manager/visitor.rb', line 259 def variations DataMapStorage.new(@mutex, @variations) end |