gosquared 3.0.0 → 3.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.
- checksums.yaml +4 -4
- data/lib/gosquared/tracking.rb +32 -22
- data/spec/tracking_spec.rb +36 -7
- 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: 88379cf385bcdca47258e96149e3f9f9d0534b2d
|
4
|
+
data.tar.gz: 97592708e18c0a9627d433c8fdb0c91c11a94ddd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a14fab23a886e2a959f3a1ac5d92e0cc8d15f5be5ce8f576bdf9551e40a2cda00d9ebd4dfc27836293e778ced178f6b32712932017dbab9ee49d06c6ded1889c
|
7
|
+
data.tar.gz: 45ad5d99aa0b145a03e4997f78b57c27853e3d993e18896095f62b494cc0e8489f1df5bf94a3f0ba88e271b3f360409f2a23a722163dd36bcfc9345917b5208a
|
data/lib/gosquared/tracking.rb
CHANGED
@@ -1,31 +1,41 @@
|
|
1
1
|
require_relative "client"
|
2
|
-
|
2
|
+
class Tracking
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
BASEURL = "https://api.gosquared.com/tracking/v1/"
|
5
|
+
DIMENSIONS = %w(event identify pageview ping properties timeout transaction)
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
def initialize(api_key, site_token, client=Client.new)
|
8
|
+
@site_token = site_token
|
9
|
+
@api_key = api_key
|
10
|
+
@client = client
|
11
|
+
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
13
|
+
DIMENSIONS.each do |dimension|
|
14
|
+
define_method dimension do |options|
|
15
|
+
@dimension = dimension
|
16
|
+
@data = options
|
17
|
+
self
|
19
18
|
end
|
19
|
+
end
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
21
|
+
def post
|
22
|
+
check_for_nil_user
|
23
|
+
response = @client.post(url, @data)
|
24
|
+
@data = nil if response.code === '200'
|
25
|
+
response
|
26
|
+
end
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
def url
|
29
|
+
url = BASEURL + @dimension + "?api_key=#{@api_key}" + "&site_token=#{@site_token}"
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
30
33
|
|
34
|
+
def check_for_nil_user
|
35
|
+
if @data.key?(:person_id) && @data[:person_id] == nil
|
36
|
+
@data.tap { |data| @data.delete(:person_id) }
|
37
|
+
warn 'person_id is nil, event will not be track against a user'
|
38
|
+
end
|
31
39
|
end
|
40
|
+
|
41
|
+
end
|
data/spec/tracking_spec.rb
CHANGED
@@ -1,21 +1,50 @@
|
|
1
|
-
describe Tracking do
|
1
|
+
describe Tracking do
|
2
2
|
subject(:gs) { described_class.new("demo", "GSN-2194840-F") }
|
3
3
|
|
4
|
-
Tracking::DIMENSIONS.each do |dimension|
|
5
|
-
|
4
|
+
Tracking::DIMENSIONS.each do |dimension|
|
5
|
+
before do
|
6
6
|
stub_request(:post, "https://api.gosquared.com/tracking/v1/#{dimension}?api_key=demo&site_token=GSN-2194840-F").
|
7
7
|
with(:body => "[ {\"person_id\":\"email:test@example.com\",\"properties\":{\"email\":\"test@example.com\"}} ]",
|
8
|
-
:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
|
8
|
+
:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
|
9
9
|
to_return(:status => 200, :body => "", :headers => {response: "success"})
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
Tracking::DIMENSIONS.each do |dimension|
|
13
|
+
Tracking::DIMENSIONS.each do |dimension|
|
14
14
|
it "posts a request to the GoSquared Track API with #{dimension} dimension" do
|
15
|
-
gs.send "#{dimension}", ({person_id: "email:test@example.com",
|
15
|
+
gs.send "#{dimension}", ({person_id: "email:test@example.com",
|
16
16
|
properties:{email: "test@example.com"}})
|
17
17
|
expect(gs.post.code).to eq('200')
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
describe "#event" do
|
22
|
+
before do
|
23
|
+
stub_request(:post, "https://api.gosquared.com/tracking/v1/event?api_key=demo&site_token=GSN-2194840-F").
|
24
|
+
with(:body => "[ {\"event\":{\"name\":\"event\"}} ]",
|
25
|
+
:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
|
26
|
+
to_return(:status => 200, :body => "", :headers => {})
|
27
|
+
@data = {person_id: nil, event: { name: 'event' } }
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'Tracks an anonymous event when a person_id is nil' do
|
31
|
+
gs.event(@data)
|
32
|
+
expect(gs.post.code).to eq('200')
|
33
|
+
end
|
34
|
+
|
35
|
+
before do
|
36
|
+
stub_request(:post, "https://api.gosquared.com/tracking/v1/event?api_key=demo&site_token=GSN-2194840-F").
|
37
|
+
with(:body => "[ {\"person_id\":\"12345\",\"event\":{\"name\":\"event\"}} ]",
|
38
|
+
:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
|
39
|
+
to_return(:status => 200, :body => "", :headers => {})
|
40
|
+
@data = {person_id: '12345', event: { name: 'event' } }
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'Tracks an anonymous event when a person_id is not nil' do
|
44
|
+
gs.event(@data)
|
45
|
+
expect(gs.post.code).to eq('200')
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gosquared
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Russell Vaughan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|