rack-ga-track 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3b0ed4ea180cfa25dd248781cc7459bcae7c345f
4
- data.tar.gz: 1d889d05d11b45f55423cc3960fab27b1e11710a
3
+ metadata.gz: 96ea26a2ffcda7b08aaaee34af1ea8c7e53b592a
4
+ data.tar.gz: 7264ed4ca578d4bda270c3adcb36c34699f33c7e
5
5
  SHA512:
6
- metadata.gz: 187b3ecd7893659001e2e300c32faf75e275a890adb6742dcb905c3e5763da09b1e1d30c6a7c727b1107bce0602e3d80a9cbac990a817016b8922bacd828e0f0
7
- data.tar.gz: b522ab8d2657afd04126800ea4307508904dccf948bc5da7c2e9f0e7facd1866b4a86fc74d50d1c545aedef88f0181a877ce5d2be2886f513810431dbc1032d0
6
+ metadata.gz: 89141a73848288473d97d2dbe3ab1290f44532fc5657ba74e892206fbc0ee053f3741f21fda3dc97b1852e974a51145c4bb042cba9da7b79c07e3d73e18b77f9
7
+ data.tar.gz: c2b9a32cad0360b9afc5a16485f3af1523dc639cb62aa2a0df1177da2a1b33fe24137108ee08b02b442aa2e8fd45d42ef5747f0f88e2de05ac4fffb4119d9e99
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ gem "rack", "~> 1.5", ">= 1.5.2"
3
3
 
4
4
  group :development do
5
5
  gem "bundler", "~> 1.6", ">= 1.6.2"
6
- gem "jeweler", "~> 1.6", ">= 1.6.4"
6
+ gem "jeweler", "~> 2.0", ">= 2.0.1"
7
7
  gem 'simplecov', '~> 0.8', ">= 0.8.2"
8
8
  gem "rack-test", "~> 0.6", ">= 0.6.2"
9
9
  gem "minitest", "~> 5.4", ">= 5.4.0"
data/Gemfile.lock CHANGED
@@ -1,23 +1,60 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ addressable (2.3.6)
5
+ builder (3.2.2)
6
+ descendants_tracker (0.0.4)
7
+ thread_safe (~> 0.3, >= 0.3.1)
4
8
  docile (1.1.5)
9
+ faraday (0.9.0)
10
+ multipart-post (>= 1.2, < 3)
5
11
  git (1.2.7)
6
- jeweler (1.6.4)
7
- bundler (~> 1.0)
12
+ github_api (0.11.3)
13
+ addressable (~> 2.3)
14
+ descendants_tracker (~> 0.0.1)
15
+ faraday (~> 0.8, < 0.10)
16
+ hashie (>= 1.2)
17
+ multi_json (>= 1.7.5, < 2.0)
18
+ nokogiri (~> 1.6.0)
19
+ oauth2
20
+ hashie (3.2.0)
21
+ highline (1.6.21)
22
+ jeweler (2.0.1)
23
+ builder
24
+ bundler (>= 1.0)
8
25
  git (>= 1.2.5)
26
+ github_api
27
+ highline (>= 1.6.15)
28
+ nokogiri (>= 1.5.10)
9
29
  rake
30
+ rdoc
31
+ json (1.8.1)
32
+ jwt (1.0.0)
33
+ mini_portile (0.6.0)
10
34
  minitest (5.4.0)
11
35
  multi_json (1.10.1)
36
+ multi_xml (0.5.5)
37
+ multipart-post (2.0.0)
38
+ nokogiri (1.6.3)
39
+ mini_portile (= 0.6.0)
40
+ oauth2 (1.0.0)
41
+ faraday (>= 0.8, < 0.10)
42
+ jwt (~> 1.0)
43
+ multi_json (~> 1.3)
44
+ multi_xml (~> 0.5)
45
+ rack (~> 1.2)
12
46
  rack (1.5.2)
13
47
  rack-test (0.6.2)
14
48
  rack (>= 1.0)
15
49
  rake (10.3.2)
50
+ rdoc (4.1.1)
51
+ json (~> 1.4)
16
52
  simplecov (0.8.2)
17
53
  docile (~> 1.1.0)
18
54
  multi_json
19
55
  simplecov-html (~> 0.8.0)
20
56
  simplecov-html (0.8.0)
57
+ thread_safe (0.3.4)
21
58
  timecop (0.7.1)
22
59
 
23
60
  PLATFORMS
@@ -25,7 +62,7 @@ PLATFORMS
25
62
 
26
63
  DEPENDENCIES
27
64
  bundler (~> 1.6, >= 1.6.2)
28
- jeweler (~> 1.6, >= 1.6.4)
65
+ jeweler (~> 2.0, >= 2.0.1)
29
66
  minitest (~> 5.4, >= 5.4.0)
30
67
  rack (~> 1.5, >= 1.5.2)
31
68
  rack-test (~> 0.6, >= 0.6.2)
data/README.md CHANGED
@@ -4,7 +4,8 @@ Rack::GaTrack
4
4
  Rack::GaTrack is a rack middleware that extracts Google Analytics Campaign
5
5
  params from the request. Specifically, it looks for a param utm\_source in the request.
6
6
  If found, it creates a cookie with utm\_source, utm\_content, utm\_term,
7
- utm\_campaign, and time.
7
+ utm\_campaign, and time. Anytime utm_source is found in the request the cookie
8
+ will be updated with the new Google Analytics Campaign params.
8
9
 
9
10
  Use Case
10
11
  ---------------
@@ -33,11 +34,12 @@ Add the Rack::GaTrack to your application stack:
33
34
  end
34
35
 
35
36
  You can now access your Google Analytics Campaign params in
36
- <code>request.env['ga\_track.source']</code>
37
- <code>request.env['ga\_track.term']</code>
38
- <code>request.env['ga\_track.content']</code>
39
- <code>request.env['ga\_track.campaign']</code>
40
- <code>request.env['ga\_track.medium']</code>
37
+ <code>env['ga\_track.source']</code>
38
+ <code>env['ga\_track.term']</code>
39
+ <code>env['ga\_track.content']</code>
40
+ <code>env['ga\_track.campaign']</code>
41
+ <code>env['ga\_track.medium']</code>
42
+ <code>env['ga\_track.time']</code>
41
43
 
42
44
  Customization
43
45
  -------------
@@ -46,14 +48,14 @@ By default cookie is set for 30 days, you can extend time to live with <code>:tt
46
48
 
47
49
  #Rails 4 in config/application.rb
48
50
  class Application < Rails::Application
49
- config.middleware.use Rack::Affiliates, :ttl => 3.months
51
+ config.middleware.use Rack::GaTrack, :ttl => 3.months
50
52
  end
51
53
 
52
54
  The <code>:domain</code> option allows to customize cookie domain.
53
55
 
54
56
  #Rails 4 in config/application.rb
55
57
  class Application < Rails::Application
56
- config.middleware.use Rack::Affiliates, :domain => '.example.org'
58
+ config.middleware.use Rack::GaTrack, :domain => '.example.org'
57
59
  end
58
60
 
59
61
  Rack::GaTrack will set cookie on <code>.example.org</code> so it's accessible on <code>www.example.org</code>, <code>app.example.org</code> etc.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
data/lib/rack-ga-track.rb CHANGED
@@ -17,7 +17,7 @@ module Rack
17
17
 
18
18
  response = @app.call(env)
19
19
  if params && req.params['utm_source']
20
- create_cookies(response[1], params)
20
+ create_cookie(response[1], params)
21
21
  end
22
22
  response
23
23
  end
@@ -27,33 +27,28 @@ module Rack
27
27
  def set_params(req)
28
28
  if req.params['utm_source']
29
29
  return params_hash(req.params)
30
- elsif req.cookies['utm_source']
31
- return params_hash(req.cookies)
30
+ elsif req.cookies['ga_track']
31
+ return JSON.parse(req.cookies['ga_track'])
32
32
  end
33
33
  false
34
34
  end
35
35
 
36
36
  def params_hash(params)
37
- params['utm_time'] ||= Time.now
38
-
39
37
  {
40
38
  source: params['utm_source'],
41
39
  medium: params['utm_medium'],
42
40
  term: params['utm_term'],
43
41
  content: params['utm_content'],
44
42
  campaign: params['utm_campaign'],
45
- time: params['utm_time'].to_i
43
+ time: Time.now.to_i
46
44
  }
47
45
  end
48
46
 
49
- def create_cookies(headers, params)
47
+ def create_cookie(headers, params)
50
48
  expires = Time.now + @cookie_ttl
51
- params.each do |key, value|
52
- cookie_hash = {:value => value, :expires => expires}
53
- cookie_hash[:domain] = @cookie_domain if @cookie_domain
54
- cookie_key = 'utm_' + key.to_s
55
- Rack::Utils.set_cookie_header!(headers, cookie_key, cookie_hash)
56
- end
49
+ cookie_hash = { value: JSON.generate(params), expires: expires, path: '/' }
50
+ cookie_hash[:domain] = @cookie_domain if @cookie_domain
51
+ Rack::Utils.set_cookie_header!(headers, 'ga_track', cookie_hash)
57
52
  end
58
53
 
59
54
  def create_env_vars(env, params)
@@ -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.2.0 ruby lib
5
+ # stub: rack-ga-track 0.3.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "rack-ga-track"
9
- s.version = "0.2.0"
9
+ s.version = "0.3.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-17"
14
+ s.date = "2014-07-21"
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 = [
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
41
41
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
42
  s.add_runtime_dependency(%q<rack>, [">= 1.5.2", "~> 1.5"])
43
43
  s.add_development_dependency(%q<bundler>, [">= 1.6.2", "~> 1.6"])
44
- s.add_development_dependency(%q<jeweler>, [">= 1.6.4", "~> 1.6"])
44
+ s.add_development_dependency(%q<jeweler>, [">= 2.0.1", "~> 2.0"])
45
45
  s.add_development_dependency(%q<simplecov>, [">= 0.8.2", "~> 0.8"])
46
46
  s.add_development_dependency(%q<rack-test>, [">= 0.6.2", "~> 0.6"])
47
47
  s.add_development_dependency(%q<minitest>, [">= 5.4.0", "~> 5.4"])
@@ -49,7 +49,7 @@ Gem::Specification.new do |s|
49
49
  else
50
50
  s.add_dependency(%q<rack>, [">= 1.5.2", "~> 1.5"])
51
51
  s.add_dependency(%q<bundler>, [">= 1.6.2", "~> 1.6"])
52
- s.add_dependency(%q<jeweler>, [">= 1.6.4", "~> 1.6"])
52
+ s.add_dependency(%q<jeweler>, [">= 2.0.1", "~> 2.0"])
53
53
  s.add_dependency(%q<simplecov>, [">= 0.8.2", "~> 0.8"])
54
54
  s.add_dependency(%q<rack-test>, [">= 0.6.2", "~> 0.6"])
55
55
  s.add_dependency(%q<minitest>, [">= 5.4.0", "~> 5.4"])
@@ -58,7 +58,7 @@ Gem::Specification.new do |s|
58
58
  else
59
59
  s.add_dependency(%q<rack>, [">= 1.5.2", "~> 1.5"])
60
60
  s.add_dependency(%q<bundler>, [">= 1.6.2", "~> 1.6"])
61
- s.add_dependency(%q<jeweler>, [">= 1.6.4", "~> 1.6"])
61
+ s.add_dependency(%q<jeweler>, [">= 2.0.1", "~> 2.0"])
62
62
  s.add_dependency(%q<simplecov>, [">= 0.8.2", "~> 0.8"])
63
63
  s.add_dependency(%q<rack-test>, [">= 0.6.2", "~> 0.6"])
64
64
  s.add_dependency(%q<minitest>, [">= 5.4.0", "~> 5.4"])
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.2.0
4
+ version: 0.3.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-17 00:00:00.000000000 Z
11
+ date: 2014-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -56,20 +56,20 @@ dependencies:
56
56
  requirements:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 1.6.4
59
+ version: 2.0.1
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '1.6'
62
+ version: '2.0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 1.6.4
69
+ version: 2.0.1
70
70
  - - "~>"
71
71
  - !ruby/object:Gem::Version
72
- version: '1.6'
72
+ version: '2.0'
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: simplecov
75
75
  requirement: !ruby/object:Gem::Requirement