gabba 0.4.2 → 1.0.1
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/Gemfile +1 -0
- data/Gemfile.lock +3 -1
- data/gabba.gemspec +1 -1
- data/lib/gabba/gabba.rb +46 -8
- data/lib/gabba/version.rb +1 -1
- data/spec/gabba_spec.rb +53 -0
- metadata +24 -37
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
gabba (0.
|
4
|
+
gabba (1.0.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
@@ -9,6 +9,7 @@ GEM
|
|
9
9
|
addressable (2.2.2)
|
10
10
|
crack (0.1.8)
|
11
11
|
minitest (2.0.0)
|
12
|
+
rake (0.9.2.2)
|
12
13
|
webmock (1.6.1)
|
13
14
|
addressable (>= 2.2.2)
|
14
15
|
crack (>= 0.1.7)
|
@@ -19,4 +20,5 @@ PLATFORMS
|
|
19
20
|
DEPENDENCIES
|
20
21
|
gabba!
|
21
22
|
minitest
|
23
|
+
rake
|
22
24
|
webmock
|
data/gabba.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Ron Evans"]
|
10
10
|
s.email = ["ron dot evans at gmail dot com"]
|
11
|
-
s.homepage = ""
|
11
|
+
s.homepage = "https://github.com/hybridgroup/gabba"
|
12
12
|
s.summary = %q{Easy server-side tracking for Google Analytics}
|
13
13
|
s.description = %q{Easy server-side tracking for Google Analytics}
|
14
14
|
|
data/lib/gabba/gabba.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# yo, easy server-side tracking for Google Analytics... hey!
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require 'uri'
|
3
|
+
require 'net/http'
|
4
|
+
require 'ipaddr'
|
4
5
|
require 'cgi'
|
5
6
|
require File.dirname(__FILE__) + '/version'
|
6
7
|
|
@@ -22,7 +23,7 @@ module Gabba
|
|
22
23
|
|
23
24
|
ESCAPES = %w{ ' ! * ) }
|
24
25
|
|
25
|
-
attr_accessor :utmwv, :utmn, :utmhn, :utmcs, :utmul, :utmdt, :utmp, :utmac, :utmt, :utmcc, :user_agent, :utma, :utmz
|
26
|
+
attr_accessor :utmwv, :utmn, :utmhn, :utmcs, :utmul, :utmdt, :utmp, :utmac, :utmt, :utmcc, :user_agent, :utma, :utmz, :utmr, :utmip
|
26
27
|
|
27
28
|
# Public: Initialize Gabba Google Analytics Tracking Object.
|
28
29
|
#
|
@@ -45,7 +46,7 @@ module Gabba
|
|
45
46
|
|
46
47
|
@utmac = ga_acct
|
47
48
|
@utmhn = domain
|
48
|
-
@user_agent = agent
|
49
|
+
@user_agent = (agent && agent.length > 0) ? agent : Gabba::USER_AGENT
|
49
50
|
|
50
51
|
@custom_vars = []
|
51
52
|
end
|
@@ -137,7 +138,9 @@ module Gabba
|
|
137
138
|
:utmhid => utmhid,
|
138
139
|
:utmp => page,
|
139
140
|
:utmac => @utmac,
|
140
|
-
:utmcc => @utmcc || cookie_params
|
141
|
+
:utmcc => @utmcc || cookie_params,
|
142
|
+
:utmr => @utmr,
|
143
|
+
:utmip => @utmip
|
141
144
|
}
|
142
145
|
|
143
146
|
# Add custom vars if present
|
@@ -182,7 +185,9 @@ module Gabba
|
|
182
185
|
:utmul => @utmul,
|
183
186
|
:utmhid => utmhid,
|
184
187
|
:utmac => @utmac,
|
185
|
-
:utmcc => @utmcc || cookie_params
|
188
|
+
:utmcc => @utmcc || cookie_params,
|
189
|
+
:utmr => @utmr,
|
190
|
+
:utmip => @utmip
|
186
191
|
}
|
187
192
|
end
|
188
193
|
|
@@ -240,7 +245,9 @@ module Gabba
|
|
240
245
|
:utmtsp => shipping,
|
241
246
|
:utmtci => city,
|
242
247
|
:utmtrg => region,
|
243
|
-
:utmtco => country
|
248
|
+
:utmtco => country,
|
249
|
+
:utmr => @utmr,
|
250
|
+
:utmip => @utmip
|
244
251
|
}
|
245
252
|
end
|
246
253
|
|
@@ -275,7 +282,9 @@ module Gabba
|
|
275
282
|
:utmipn => name,
|
276
283
|
:utmiva => category,
|
277
284
|
:utmipr => price,
|
278
|
-
:utmiqt => quantity
|
285
|
+
:utmiqt => quantity,
|
286
|
+
:utmr => @utmr,
|
287
|
+
:utmip => @utmip
|
279
288
|
}
|
280
289
|
end
|
281
290
|
|
@@ -292,6 +301,35 @@ module Gabba
|
|
292
301
|
def identify_user(utma, utmz=nil)
|
293
302
|
@utma = utma
|
294
303
|
@utmz = utmz
|
304
|
+
self
|
305
|
+
end
|
306
|
+
|
307
|
+
# Public: provide the utmr attribute, allowing for referral tracking
|
308
|
+
#
|
309
|
+
# Called before page_view etc
|
310
|
+
#
|
311
|
+
# Examples:
|
312
|
+
# g = Gabba::Gabba.new("UT-1234", "mydomain.com")
|
313
|
+
# g.referer(request.env['HTTP_REFERER'])
|
314
|
+
# g.page_view("something", "track/me")
|
315
|
+
#
|
316
|
+
def referer(utmr)
|
317
|
+
@utmr = utmr
|
318
|
+
self
|
319
|
+
end
|
320
|
+
|
321
|
+
# Public: provide the utmip attribute, allowing for IP address tracking
|
322
|
+
#
|
323
|
+
# Called before page_view etc
|
324
|
+
#
|
325
|
+
# Examples:
|
326
|
+
# g = Gabba::Gabba.new("UT-1234", "mydomain.com")
|
327
|
+
# g.ip(request.env["REMOTE_ADDR"])
|
328
|
+
# g.page_view("something", "track/me")
|
329
|
+
#
|
330
|
+
def ip(utmip)
|
331
|
+
@utmip = ::IPAddr.new(utmip).mask(24).to_s
|
332
|
+
self
|
295
333
|
end
|
296
334
|
|
297
335
|
# create magical cookie params used by GA for its own nefarious purposes
|
data/lib/gabba/version.rb
CHANGED
data/spec/gabba_spec.rb
CHANGED
@@ -25,6 +25,18 @@ describe Gabba::Gabba do
|
|
25
25
|
it "must do page view request to google" do
|
26
26
|
@gabba.page_view("title", "/page/path", "6783939397").code.must_equal("200")
|
27
27
|
end
|
28
|
+
|
29
|
+
it "should use Gabba user agent if none is specified" do
|
30
|
+
@gabba.user_agent.must_equal(Gabba::Gabba::USER_AGENT)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should use Gabba user agent if nil is specified" do
|
34
|
+
Gabba::Gabba.new("abc","123",nil).user_agent.must_equal(Gabba::Gabba::USER_AGENT)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should use Gabba user agent if blank is specified" do
|
38
|
+
Gabba::Gabba.new("abc","123","").user_agent.must_equal(Gabba::Gabba::USER_AGENT)
|
39
|
+
end
|
28
40
|
end
|
29
41
|
|
30
42
|
describe "when tracking custom events" do
|
@@ -124,6 +136,47 @@ describe Gabba::Gabba do
|
|
124
136
|
end
|
125
137
|
end
|
126
138
|
|
139
|
+
describe "when using referer" do
|
140
|
+
referer = "http://www.someurl.com/blah/blah"
|
141
|
+
before do
|
142
|
+
@gabba = Gabba::Gabba.new("abc", "123")
|
143
|
+
@gabba.referer(referer)
|
144
|
+
end
|
145
|
+
it "must use the specified referer in page_view_params" do
|
146
|
+
@gabba.page_view_params("whocares","doesntmatter")[:utmr].must_equal(referer)
|
147
|
+
end
|
148
|
+
it "must use the specified referer in event_params" do
|
149
|
+
@gabba.event_params("whocares","doesntmatter")[:utmr].must_equal(referer)
|
150
|
+
end
|
151
|
+
it "must use the specified referer in transaction_params" do
|
152
|
+
@gabba.transaction_params('order_id', 'total', 'store_name', 'tax', 'shipping', 'city', 'region', 'country', 'utmhid')[:utmr].must_equal(referer)
|
153
|
+
end
|
154
|
+
it "must use the specified referer in item_params" do
|
155
|
+
@gabba.item_params('order_id', 'item_sku', 'name', 'category', 'price', 'quantity', 'utmhid')[:utmr].must_equal(referer)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
describe "when using ip" do
|
160
|
+
ip = "123.123.123.123"
|
161
|
+
masked_ip = "123.123.123.0"
|
162
|
+
before do
|
163
|
+
@gabba = Gabba::Gabba.new("abc", "123")
|
164
|
+
@gabba.ip(ip)
|
165
|
+
end
|
166
|
+
it "must use the specified referer in page_view_params" do
|
167
|
+
@gabba.page_view_params("whocares","doesntmatter")[:utmip].must_equal(masked_ip)
|
168
|
+
end
|
169
|
+
it "must use the specified referer in event_params" do
|
170
|
+
@gabba.event_params("whocares","doesntmatter")[:utmip].must_equal(masked_ip)
|
171
|
+
end
|
172
|
+
it "must use the specified referer in transaction_params" do
|
173
|
+
@gabba.transaction_params('order_id', 'total', 'store_name', 'tax', 'shipping', 'city', 'region', 'country', 'utmhid')[:utmip].must_equal(masked_ip)
|
174
|
+
end
|
175
|
+
it "must use the specified referer in item_params" do
|
176
|
+
@gabba.item_params('order_id', 'item_sku', 'name', 'category', 'price', 'quantity', 'utmhid')[:utmip].must_equal(masked_ip)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
127
180
|
describe "setting a custom var" do
|
128
181
|
before do
|
129
182
|
@gabba = Gabba::Gabba.new("abc", "123")
|
metadata
CHANGED
@@ -1,33 +1,23 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: gabba
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
- 2
|
10
|
-
version: 0.4.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Ron Evans
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2012-10-20 00:00:00 Z
|
12
|
+
date: 2012-11-08 00:00:00.000000000 Z
|
19
13
|
dependencies: []
|
20
|
-
|
21
14
|
description: Easy server-side tracking for Google Analytics
|
22
|
-
email:
|
15
|
+
email:
|
23
16
|
- ron dot evans at gmail dot com
|
24
17
|
executables: []
|
25
|
-
|
26
18
|
extensions: []
|
27
|
-
|
28
19
|
extra_rdoc_files: []
|
29
|
-
|
30
|
-
files:
|
20
|
+
files:
|
31
21
|
- .gitignore
|
32
22
|
- Gemfile
|
33
23
|
- Gemfile.lock
|
@@ -39,39 +29,36 @@ files:
|
|
39
29
|
- lib/gabba/version.rb
|
40
30
|
- spec/gabba_spec.rb
|
41
31
|
- spec/spec_helper.rb
|
42
|
-
homepage:
|
32
|
+
homepage: https://github.com/hybridgroup/gabba
|
43
33
|
licenses: []
|
44
|
-
|
45
34
|
post_install_message:
|
46
35
|
rdoc_options: []
|
47
|
-
|
48
|
-
require_paths:
|
36
|
+
require_paths:
|
49
37
|
- lib
|
50
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
39
|
none: false
|
52
|
-
requirements:
|
53
|
-
- -
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
|
56
|
-
segments:
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
segments:
|
57
45
|
- 0
|
58
|
-
|
59
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
46
|
+
hash: -242928597146007543
|
47
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
48
|
none: false
|
61
|
-
requirements:
|
62
|
-
- -
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
|
65
|
-
segments:
|
49
|
+
requirements:
|
50
|
+
- - ! '>='
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
segments:
|
66
54
|
- 0
|
67
|
-
|
55
|
+
hash: -242928597146007543
|
68
56
|
requirements: []
|
69
|
-
|
70
57
|
rubyforge_project: gabba
|
71
58
|
rubygems_version: 1.8.24
|
72
59
|
signing_key:
|
73
60
|
specification_version: 3
|
74
61
|
summary: Easy server-side tracking for Google Analytics
|
75
|
-
test_files:
|
62
|
+
test_files:
|
76
63
|
- spec/gabba_spec.rb
|
77
64
|
- spec/spec_helper.rb
|