rack-ga-track 0.2.0 → 0.3.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: 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