gabba-gmp 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gabba-gmp/event.rb +2 -2
- data/lib/gabba-gmp/gabba_gmp.rb +13 -6
- data/lib/gabba-gmp/version.rb +1 -1
- data/spec/lib/campaign_spec.rb +20 -0
- data/spec/lib/custom_vars_spec.rb +3 -3
- data/spec/lib/event_spec.rb +8 -0
- data/spec/lib/gabba_gmp_spec.rb +12 -0
- data/spec/lib/page_view_spec.rb +5 -5
- data/spec/spec_helper.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00bdea145d8fff89dfdeae456a77fa9d63126ad5
|
4
|
+
data.tar.gz: 034188d7f5a36758720eee9b33f5e5ead77a137b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f0d2df6f233cb9a377d5d335fba9d93350740504d1e157bda3b0d78e7df18a9acd7145c1e1e854b043116cf039eb2a09d7725c0ff7c1ca6ec4192808a830037
|
7
|
+
data.tar.gz: fba6cfb6133dc3c7ea42669228a8b6a8dbe850c49de8464b92baade2b767f69864ae28c1b50e3a180a4ec82ba7b3297cfc067cfb818970666a36bf3644cd8ea0
|
data/lib/gabba-gmp/event.rb
CHANGED
@@ -27,8 +27,8 @@ module GabbaGMP
|
|
27
27
|
event_category: category,
|
28
28
|
event_action: action
|
29
29
|
}
|
30
|
-
options[:event_label] = label
|
31
|
-
options[:event_value] = value
|
30
|
+
options[:event_label] = label unless label.to_s.empty?
|
31
|
+
options[:event_value] = value unless value.to_s.empty?
|
32
32
|
@sessionopts.merge(options).merge!(event_options)
|
33
33
|
end
|
34
34
|
end
|
data/lib/gabba-gmp/gabba_gmp.rb
CHANGED
@@ -4,6 +4,7 @@ require 'net/http'
|
|
4
4
|
require 'ipaddr'
|
5
5
|
require 'cgi'
|
6
6
|
require 'net/http/persistent'
|
7
|
+
require 'pry'
|
7
8
|
|
8
9
|
require "#{File.dirname(__FILE__)}/parameter_map"
|
9
10
|
require "#{File.dirname(__FILE__)}/campaign"
|
@@ -93,26 +94,30 @@ module GabbaGMP
|
|
93
94
|
campaign ||= Campaign.new
|
94
95
|
{}.tap do |campaign_params|
|
95
96
|
if campaign.present?
|
96
|
-
@sessionopts[:campaign_name] = campaign.name
|
97
|
+
@sessionopts[:campaign_name] = parse_string(campaign.name)
|
97
98
|
@sessionopts[:campaign_name] ||= "(direct)"
|
98
99
|
|
99
|
-
@sessionopts[:campaign_source] = campaign.source
|
100
|
+
@sessionopts[:campaign_source] = parse_string(campaign.source)
|
100
101
|
@sessionopts[:campaign_source] ||= "(direct)"
|
101
102
|
|
102
|
-
@sessionopts[:campaign_medium] = campaign.medium
|
103
|
+
@sessionopts[:campaign_medium] = parse_string(campaign.medium)
|
103
104
|
@sessionopts[:campaign_medium] ||= "(none)"
|
104
105
|
|
105
106
|
@sessionopts.delete(:campaign_keyword)
|
106
|
-
@sessionopts[:campaign_keyword] = campaign.keyword
|
107
|
+
@sessionopts[:campaign_keyword] = campaign.keyword unless campaign.keyword.to_s.empty?
|
107
108
|
|
108
109
|
@sessionopts.delete(:campaign_content)
|
109
|
-
@sessionopts[:campaign_content] = campaign.content
|
110
|
+
@sessionopts[:campaign_content] = campaign.content unless campaign.content.to_s.empty?
|
110
111
|
end
|
111
112
|
end
|
112
113
|
end
|
113
114
|
|
114
115
|
|
115
116
|
private
|
117
|
+
def parse_string(value)
|
118
|
+
(value.to_s.empty? ? nil : value)
|
119
|
+
end
|
120
|
+
|
116
121
|
# Sanity check that we have needed params to even call GA
|
117
122
|
def validate_session_parameters(params)
|
118
123
|
raise GoogleAnalyticsRequiredParameterMissingError, "Protocol version is required" unless params[:protocol_version]
|
@@ -128,7 +133,9 @@ module GabbaGMP
|
|
128
133
|
# makes the tracking call to Google Analytics
|
129
134
|
def hey(params)
|
130
135
|
validate_session_parameters(params)
|
131
|
-
|
136
|
+
params_formatted = params.each_pair {|k,v| params[k] = "#{v}"}.keep_if {|k,v| !v.nil? and !v.empty?}
|
137
|
+
params_formatted = params_formatted.map {|k,v| "#{GA_PARAMS[k]}=#{URI.escape(v, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))}" }
|
138
|
+
query = params_formatted.join('&')
|
132
139
|
|
133
140
|
@http ||= Net::HTTP::Persistent.new 'GabbaGMP'
|
134
141
|
|
data/lib/gabba-gmp/version.rb
CHANGED
data/spec/lib/campaign_spec.rb
CHANGED
@@ -56,6 +56,26 @@ describe GabbaGMP::GabbaGMP::Campaign do
|
|
56
56
|
it "is not present?" do
|
57
57
|
campaign = GabbaGMP::GabbaGMP::Campaign.new
|
58
58
|
expect(campaign.present?).to be(false)
|
59
|
+
|
60
|
+
campaign = GabbaGMP::GabbaGMP::Campaign.new
|
61
|
+
campaign.name = ''
|
62
|
+
expect(campaign.present?).to be(false)
|
63
|
+
|
64
|
+
campaign = GabbaGMP::GabbaGMP::Campaign.new
|
65
|
+
campaign.source = ''
|
66
|
+
expect(campaign.present?).to be(false)
|
67
|
+
|
68
|
+
campaign = GabbaGMP::GabbaGMP::Campaign.new
|
69
|
+
campaign.medium = ''
|
70
|
+
expect(campaign.present?).to be(false)
|
71
|
+
|
72
|
+
campaign = GabbaGMP::GabbaGMP::Campaign.new
|
73
|
+
campaign.keyword = ''
|
74
|
+
expect(campaign.present?).to be(false)
|
75
|
+
|
76
|
+
campaign = GabbaGMP::GabbaGMP::Campaign.new
|
77
|
+
campaign.content = ''
|
78
|
+
expect(campaign.present?).to be(false)
|
59
79
|
end
|
60
80
|
end
|
61
81
|
end
|
@@ -14,20 +14,20 @@ describe GabbaGMP::GabbaGMP::CustomVars do
|
|
14
14
|
it "#set_custom_var(index, name, value) using pageview" do
|
15
15
|
gabbaGmp.set_custom_var(1, "Dogs", "Black")
|
16
16
|
gabbaGmp.page_view(request)
|
17
|
-
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1",
|
17
|
+
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview", cd1: "Black"}))
|
18
18
|
|
19
19
|
gabbaGmp.set_custom_var(1, "Dog", "Spotty")
|
20
20
|
gabbaGmp.set_custom_var(2, "Lemming", "Fall")
|
21
21
|
gabbaGmp.set_custom_var(3, "Kite", "Surf")
|
22
22
|
gabbaGmp.set_custom_var(200, "Cabbage", "Patch")
|
23
23
|
gabbaGmp.page_view(request)
|
24
|
-
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1",
|
24
|
+
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview",
|
25
25
|
cd1: "Spotty", cd2: "Fall", cd3: "Surf", cd200: "Patch"}))
|
26
26
|
|
27
27
|
expect {gabbaGmp.set_custom_var(201, "Cabbage", "Patch")}.to raise_error(GabbaGMP::GoogleAnalyticsInvalidParameterError)
|
28
28
|
|
29
29
|
gabbaGmp.page_view(request, nil, dimension_4: "Ni!!")
|
30
|
-
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1",
|
30
|
+
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview",
|
31
31
|
cd1: "Spotty", cd2: "Fall", cd3: "Surf", cd200: "Patch", cd4: "Ni!!"}))
|
32
32
|
end
|
33
33
|
|
data/spec/lib/event_spec.rb
CHANGED
@@ -15,12 +15,20 @@ describe GabbaGMP::GabbaGMP::Event do
|
|
15
15
|
gabbaGmp.event("Cats", "Action")
|
16
16
|
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
|
17
17
|
ec: "Cats", ea: "Action"}))
|
18
|
+
|
19
|
+
gabbaGmp.event("Cats", "Action","")
|
20
|
+
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
|
21
|
+
ec: "Cats", ea: "Action"}), 2)
|
18
22
|
end
|
19
23
|
|
20
24
|
it "#event(category, action, label)" do
|
21
25
|
gabbaGmp.event("Cats", "Action", "Label")
|
22
26
|
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
|
23
27
|
ec: "Cats", ea: "Action", el: "Label"}))
|
28
|
+
|
29
|
+
gabbaGmp.event("Cats", "Action", "Label", "")
|
30
|
+
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
|
31
|
+
ec: "Cats", ea: "Action", el: "Label"}), 2)
|
24
32
|
end
|
25
33
|
|
26
34
|
it "#event(category, action, label, value)" do
|
data/spec/lib/gabba_gmp_spec.rb
CHANGED
@@ -112,6 +112,18 @@ describe GabbaGMP::GabbaGMP do
|
|
112
112
|
gabbaGmp.event("Cats", "Action")
|
113
113
|
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
|
114
114
|
ec: "Cats", ea: "Action", cn: "(direct)", cs: "Confidential", cm: "(none)", cc: "Contents"}))
|
115
|
+
|
116
|
+
campaign = GabbaGMP::GabbaGMP::Campaign.new()
|
117
|
+
campaign.name = "First Campaign"
|
118
|
+
campaign.source = ""
|
119
|
+
campaign.medium = ""
|
120
|
+
campaign.keyword = ""
|
121
|
+
campaign.content = ""
|
122
|
+
|
123
|
+
gabbaGmp.campaign = campaign
|
124
|
+
gabbaGmp.event("Cats", "Action")
|
125
|
+
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
|
126
|
+
ec: "Cats", ea: "Action", cn: "First Campaign", cs: "(direct)", cm: "(none)"}))
|
115
127
|
end
|
116
128
|
end
|
117
129
|
describe "#campaign=" do
|
data/spec/lib/page_view_spec.rb
CHANGED
@@ -13,16 +13,16 @@ describe GabbaGMP::GabbaGMP::PageView do
|
|
13
13
|
|
14
14
|
it "#page_view(request)" do
|
15
15
|
gabbaGmp.page_view(request)
|
16
|
-
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1",
|
16
|
+
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview"}))
|
17
17
|
|
18
18
|
request.fullpath = "/amazing/things"
|
19
19
|
gabbaGmp.page_view(request)
|
20
|
-
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1",
|
20
|
+
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview", dp: "/amazing/things"}))
|
21
21
|
end
|
22
22
|
|
23
23
|
it "#page_view(request, title)" do
|
24
24
|
gabbaGmp.page_view(request, "Title")
|
25
|
-
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "Title", tid: "tracker", cid: "1234", t: "pageview"
|
25
|
+
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "Title", tid: "tracker", cid: "1234", t: "pageview"}))
|
26
26
|
end
|
27
27
|
|
28
28
|
it "#page_view(request, title, options)" do
|
@@ -35,10 +35,10 @@ describe GabbaGMP::GabbaGMP::PageView do
|
|
35
35
|
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "Title", tid: "tracker", cid: "1234", t: "pageview", dp: "/Nowhere"}))
|
36
36
|
|
37
37
|
gabbaGmp.page_view(request)
|
38
|
-
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1",
|
38
|
+
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview"}))
|
39
39
|
|
40
40
|
gabbaGmp.page_view(request, "Title", {user_language: "en-au"})
|
41
|
-
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "Title", tid: "tracker", cid: "1234", t: "pageview", ul: "en-au"
|
41
|
+
expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "Title", tid: "tracker", cid: "1234", t: "pageview", ul: "en-au"}))
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -11,8 +11,8 @@ def stub_analytics(expected_params)
|
|
11
11
|
).to_return(:status => 200, :body => '', :headers => {})
|
12
12
|
end
|
13
13
|
|
14
|
-
def expect_query(query_params)
|
15
|
-
expect(WebMock).to have_requested(:get, "www.google-analytics.com\/collect").with(:query => query_params)
|
14
|
+
def expect_query(query_params, times = 1)
|
15
|
+
expect(WebMock).to have_requested(:get, "www.google-analytics.com\/collect").with(:query => query_params).times(times)
|
16
16
|
end
|
17
17
|
|
18
18
|
class MockCookies
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gabba-gmp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julian West
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-http-persistent
|