rack-ga-track 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b92bcb3b371ada83ad23980f38d88415c8110f81
4
- data.tar.gz: a265c689ac2191bbfc423976eb55978b96bcb3ae
3
+ metadata.gz: 3b0ed4ea180cfa25dd248781cc7459bcae7c345f
4
+ data.tar.gz: 1d889d05d11b45f55423cc3960fab27b1e11710a
5
5
  SHA512:
6
- metadata.gz: 2336943aab1d42f717bf7407ce461eb9e9696b11708ab387da76656ab112edff9fec3d9b421dcd43488ed79fc1c7a015dd57ee7ac8eef740867773e0f3faf490
7
- data.tar.gz: c2cbb3e4dfe72c65fbabe72524ba927653ddd54e5d9d0b05827e5652bc9c58d730e52178c63d07c9068512c7b80e3413c05c0e56a170e6778a73f669e18b7b66
6
+ metadata.gz: 187b3ecd7893659001e2e300c32faf75e275a890adb6742dcb905c3e5763da09b1e1d30c6a7c727b1107bce0602e3d80a9cbac990a817016b8922bacd828e0f0
7
+ data.tar.gz: b522ab8d2657afd04126800ea4307508904dccf948bc5da7c2e9f0e7facd1866b4a86fc74d50d1c545aedef88f0181a877ce5d2be2886f513810431dbc1032d0
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/lib/rack-ga-track.rb CHANGED
@@ -9,26 +9,30 @@ module Rack
9
9
 
10
10
  def call(env)
11
11
  req = Rack::Request.new(env)
12
- status, headers, body = @app.call(env)
13
12
 
14
- args = {}
15
-
16
- if req.cookies['utm_source']
17
- args = params_hash(req.cookies)
18
- elsif req.params['utm_source']
19
- args = params_hash(req.params)
20
- create_cookies(headers, args)
13
+ params = set_params(req)
14
+ if params
15
+ create_env_vars(env, params)
21
16
  end
22
17
 
23
- unless args.empty?
24
- create_env_vars(env, args)
18
+ response = @app.call(env)
19
+ if params && req.params['utm_source']
20
+ create_cookies(response[1], params)
25
21
  end
26
-
27
- [status, headers, body]
22
+ response
28
23
  end
29
24
 
30
25
  private
31
26
 
27
+ def set_params(req)
28
+ if req.params['utm_source']
29
+ return params_hash(req.params)
30
+ elsif req.cookies['utm_source']
31
+ return params_hash(req.cookies)
32
+ end
33
+ false
34
+ end
35
+
32
36
  def params_hash(params)
33
37
  params['utm_time'] ||= Time.now
34
38
 
@@ -42,9 +46,9 @@ module Rack
42
46
  }
43
47
  end
44
48
 
45
- def create_cookies(headers, args)
49
+ def create_cookies(headers, params)
46
50
  expires = Time.now + @cookie_ttl
47
- args.each do |key, value|
51
+ params.each do |key, value|
48
52
  cookie_hash = {:value => value, :expires => expires}
49
53
  cookie_hash[:domain] = @cookie_domain if @cookie_domain
50
54
  cookie_key = 'utm_' + key.to_s
@@ -52,8 +56,8 @@ module Rack
52
56
  end
53
57
  end
54
58
 
55
- def create_env_vars(env, args)
56
- args.each do |key, value|
59
+ def create_env_vars(env, params)
60
+ params.each do |key, value|
57
61
  env["ga_track.#{key.to_s}"] = value
58
62
  end
59
63
  end
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: rack-ga-track 0.1.0 ruby lib
5
+ # stub: rack-ga-track 0.2.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "rack-ga-track"
9
- s.version = "0.1.0"
9
+ s.version = "0.2.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Daniel Nolan"]
14
- s.date = "2014-07-15"
14
+ s.date = "2014-07-17"
15
15
  s.description = "If the user visits via a Google Analytics Campaign link,\n this middleware will track utm_source, utm_content, utm_term, utm_medium, utm_campaign, and time."
16
16
  s.email = "dnolan@t1dexchange.org"
17
17
  s.extra_rdoc_files = [
@@ -19,7 +19,11 @@ describe "RackGaTrack" do
19
19
  it "should set ga_track env vars from params" do
20
20
  Timecop.freeze do
21
21
  @time = Time.now
22
- get '/', {utm_source: 'testing', utm_campaign: 'email', utm_content: 'test_content'}
22
+ params = { utm_source: 'testing',
23
+ utm_campaign: 'email',
24
+ utm_content: 'test_content' }
25
+
26
+ get '/', params
23
27
  end
24
28
 
25
29
  last_request.env['ga_track.source'].must_equal "testing"
@@ -31,7 +35,11 @@ describe "RackGaTrack" do
31
35
  it "should save GA Campaign params in a cookie" do
32
36
  Timecop.freeze do
33
37
  @time = Time.now
34
- get '/', {utm_source: 'testing', utm_campaign: 'email', utm_content: 'test_content'}
38
+ params = { utm_source: 'testing',
39
+ utm_campaign: 'email',
40
+ utm_content: 'test_content' }
41
+
42
+ get '/', params
35
43
  end
36
44
 
37
45
  rack_mock_session.cookie_jar["utm_source"].must_equal "testing"
@@ -76,5 +84,17 @@ describe "RackGaTrack" do
76
84
  rack_mock_session.cookie_jar["utm_content"].must_equal "test_content"
77
85
  rack_mock_session.cookie_jar["utm_time"].must_equal "#{@time.to_i}"
78
86
  end
87
+
88
+ it 'should update existing cookie if utm_source is present in url params' do
89
+ Timecop.freeze(60*60*24) do
90
+ params = { utm_source: 'cool_source',
91
+ utm_campaign: 'email',
92
+ utm_content: 'test_content' }
93
+
94
+ get '/', params
95
+ end
96
+
97
+ rack_mock_session.cookie_jar["utm_source"].must_equal "cool_source"
98
+ end
79
99
  end
80
100
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-ga-track
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Nolan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-15 00:00:00.000000000 Z
11
+ date: 2014-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack