i_wonder 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,7 +10,7 @@ module IWonder
10
10
  end
11
11
 
12
12
  class Configuration
13
- attr_accessor :keep_hits_for, :only_log_hits_on_200, :back_to_app_link, :app_name
13
+ attr_accessor :keep_hits_for, :only_log_hits_on_200, :back_to_app_link, :app_name, :return_visit_interval
14
14
  attr_reader :controllers_to_ignore
15
15
 
16
16
  def initialize
@@ -19,6 +19,7 @@ module IWonder
19
19
  @only_log_hits_on_200 = true
20
20
  @back_to_app_link = "/"
21
21
  @app_name = "My App"
22
+ @return_visit_interval = 1.hour
22
23
  end
23
24
 
24
25
  def controllers_to_ignore=(new_controllers)
@@ -2,7 +2,7 @@ module IWonder
2
2
  module Logging
3
3
  module ActionControllerMixins
4
4
 
5
- def report!(event_sym, options = {})
5
+ def report!(event_sym, options = {})
6
6
  options ||= {}
7
7
  options[:event_type] = event_sym.to_s # it will get converted when stored anyways.
8
8
 
@@ -2,6 +2,7 @@ module IWonder
2
2
  module Logging
3
3
  class Middleware
4
4
  NO_USER_KEY = "_no_user"
5
+ LAST_HIT_TIME = "_last_hit"
5
6
  BOT_REGEX = /msnbot|yahoo|slurp|googlebot/
6
7
 
7
8
  def initialize(app)
@@ -27,6 +28,7 @@ module IWonder
27
28
 
28
29
  def process_env(env)
29
30
  check_for_new_visitor(env) # this will set the i_wonder_session_id if blank. This session is needed later
31
+ check_for_return_visit(env)
30
32
  log_hit(env)
31
33
  merge_session_to_user(env)
32
34
  generate_any_reported_events(env)
@@ -40,6 +42,20 @@ module IWonder
40
42
  end
41
43
  end
42
44
 
45
+ def check_for_return_visit(env)
46
+ env[ENV_KEY]["new_events"] ||= []
47
+
48
+ #is there a last_hit key
49
+ if cookies(env)[COOKIE_KEY+LAST_HIT_TIME]
50
+ previous_hit = Time.zone.parse(cookies(env)[COOKIE_KEY+LAST_HIT_TIME])
51
+ if previous_hit + IWonder.configuration.return_visit_interval < Time.zone.now
52
+ env[ENV_KEY]["new_events"] << {:event_type => "return_visit"}
53
+ end
54
+ end
55
+
56
+ cookies(env).permanent[COOKIE_KEY+LAST_HIT_TIME] = Time.zone.now.to_s
57
+ end
58
+
43
59
  def check_for_new_visitor(env)
44
60
  if cookies(env)[COOKIE_KEY+SESSION_KEY_NAME].blank?
45
61
  cookies(env).permanent[COOKIE_KEY+SESSION_KEY_NAME] = SecureRandom.hex(10) # this should swithc to something actually unique
@@ -1,3 +1,3 @@
1
1
  module IWonder
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end