gabba-gmp 1.0.1 → 1.0.2
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 +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
|