rack-referral-tracking 0.0.4 → 0.0.5
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.
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Rack::Referral::Tracking
|
2
2
|
|
3
|
+
[](https://codeclimate.com/github/craigkerstiens/rack-referral-tracking)
|
4
|
+
|
3
5
|
Rack middleware that detects requests from a referral and places some details
|
4
6
|
about the referral in a user's cookies.
|
5
7
|
|
data/Rakefile
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'cgi'
|
1
2
|
require 'domainatrix'
|
2
3
|
require 'fernet'
|
3
4
|
require 'uri'
|
@@ -27,10 +28,10 @@ module Rack
|
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
30
|
-
Rack::Utils.set_cookie_header!(headers, "utm_campaign", :value => params['utm_campaign'], :domain => cookie_domain, :path => '/') if params.has_key? 'utm_campaign'
|
31
|
-
Rack::Utils.set_cookie_header!(headers, "utm_source", :value => params['utm_source'], :domain => cookie_domain, :path => '/') if params.has_key? 'utm_source'
|
32
|
-
Rack::Utils.set_cookie_header!(headers, "utm_medium", :value => params['utm_medium'], :domain => cookie_domain, :path => '/') if params.has_key? 'utm_medium'
|
33
|
-
Rack::Utils.set_cookie_header!(headers, "ref", :value => referer, :domain => cookie_domain, :path => '/') if referer
|
31
|
+
Rack::Utils.set_cookie_header!(headers, "utm_campaign", :value => params['utm_campaign'], :domain => cookie_domain, :path => '/', :httponly => true, :secure => true) if params.has_key? 'utm_campaign'
|
32
|
+
Rack::Utils.set_cookie_header!(headers, "utm_source", :value => params['utm_source'], :domain => cookie_domain, :path => '/', :httponly => true, :secure => true) if params.has_key? 'utm_source'
|
33
|
+
Rack::Utils.set_cookie_header!(headers, "utm_medium", :value => params['utm_medium'], :domain => cookie_domain, :path => '/', :httponly => true, :secure => true) if params.has_key? 'utm_medium'
|
34
|
+
Rack::Utils.set_cookie_header!(headers, "ref", :value => referer, :domain => cookie_domain, :path => '/', :httponly => true, :secure => true) if referer
|
34
35
|
|
35
36
|
[status, headers, body]
|
36
37
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require_relative '../../spec_helper'
|
2
|
+
|
3
|
+
describe Rack::ReferralTracking::Middleware do
|
4
|
+
include Rack::Test::Methods
|
5
|
+
|
6
|
+
describe 'basic Rack compliance' do
|
7
|
+
let(:app) do
|
8
|
+
inner_app = lambda { |env|
|
9
|
+
[200, {'Content-Type' => 'text/plain'}, ["OK"]]
|
10
|
+
}
|
11
|
+
Rack::Lint.new(Rack::ReferralTracking::Middleware.new(inner_app))
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'passes all Lint checks' do
|
15
|
+
env = Rack::MockRequest.env_for('/')
|
16
|
+
app.call(env)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'with referral metadata' do
|
21
|
+
let(:app) do
|
22
|
+
inner_app = lambda { |env|
|
23
|
+
[200, {'Content-Type' => 'text/plain'}, ["OK"]]
|
24
|
+
}
|
25
|
+
Rack::ReferralTracking::Middleware.new(inner_app)
|
26
|
+
end
|
27
|
+
|
28
|
+
before { clear_cookies }
|
29
|
+
|
30
|
+
it 'stores utm_campaign in a cookie' do
|
31
|
+
get 'http://blog.example.com/?utm_campaign=launch'
|
32
|
+
get 'http://id.example.com/signup'
|
33
|
+
|
34
|
+
last_request.cookies.must_equal 'utm_campaign' => 'launch'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'stores utm_source in a cookie' do
|
38
|
+
get 'http://blog.example.com/?utm_source=twitter'
|
39
|
+
get 'http://id.example.com/signup'
|
40
|
+
|
41
|
+
last_request.cookies.must_equal 'utm_source' => 'twitter'
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'stores utm_medium in a cookie' do
|
45
|
+
get 'http://blog.example.com/?utm_medium=email'
|
46
|
+
get 'http://id.example.com/signup'
|
47
|
+
|
48
|
+
last_request.cookies.must_equal 'utm_medium' => 'email'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-referral-tracking
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2014-01-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: domainatrix
|
@@ -44,6 +44,38 @@ dependencies:
|
|
44
44
|
- - ! '>='
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rack
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: rack-test
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
47
79
|
- !ruby/object:Gem::Dependency
|
48
80
|
name: rake
|
49
81
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,6 +108,8 @@ files:
|
|
76
108
|
- lib/rack-referral-tracking/middleware.rb
|
77
109
|
- lib/rack-referral-tracking/version.rb
|
78
110
|
- rack-referral-tracking.gemspec
|
111
|
+
- spec/lib/rack-referral-tracking/middleware_spec.rb
|
112
|
+
- spec/spec_helper.rb
|
79
113
|
homepage: https://github.com/craigkerstiens/rack-referral-tracking
|
80
114
|
licenses: []
|
81
115
|
post_install_message:
|
@@ -100,4 +134,6 @@ rubygems_version: 1.8.25
|
|
100
134
|
signing_key:
|
101
135
|
specification_version: 3
|
102
136
|
summary: Remember a visitor's referrer across subdomains
|
103
|
-
test_files:
|
137
|
+
test_files:
|
138
|
+
- spec/lib/rack-referral-tracking/middleware_spec.rb
|
139
|
+
- spec/spec_helper.rb
|