gosquared 3.0.7 → 3.0.8
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/Gemfile +1 -1
- data/lib/gosquared.rb +36 -39
- data/lib/gosquared/account.rb +2 -2
- data/lib/gosquared/client.rb +55 -57
- data/lib/gosquared/now.rb +45 -48
- data/lib/gosquared/people.rb +58 -57
- data/lib/gosquared/tracking.rb +37 -39
- data/lib/gosquared/trends.rb +49 -50
- data/spec/account_spec.rb +54 -58
- data/spec/client_spec.rb +54 -55
- data/spec/now_spec.rb +25 -26
- data/spec/people_spec.rb +103 -97
- data/spec/spec_helper.rb +51 -53
- data/spec/tracking_spec.rb +47 -50
- data/spec/trends_spec.rb +30 -31
- 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: 309ca7ef73e75ec39499fb1a9829252e005becf1
|
4
|
+
data.tar.gz: 9bc864358cf057b48bf20309ac27d5ccbf9c1419
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e45e02c53f0b434d3febef577d0a103df52050becd72656f0a37ae94f5173008ab044e00ae5d73fcfab7255c8dcb652e9cad25fb14217d809addc9aa34f709f2
|
7
|
+
data.tar.gz: 921a827fd9a71960975fd729d16f97a8a88b46588de9e266a10e460387d8883bab7fd7a02392142d1b591ce4a2040996cfeb01556d17c9af1a30b1c8b5c16489
|
data/Gemfile
CHANGED
data/lib/gosquared.rb
CHANGED
@@ -1,45 +1,42 @@
|
|
1
|
-
require_relative
|
2
|
-
require_relative
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
1
|
+
require_relative 'gosquared/trends'
|
2
|
+
require_relative 'gosquared/tracking'
|
3
|
+
require_relative 'gosquared/people'
|
4
|
+
require_relative 'gosquared/now'
|
5
|
+
require_relative 'gosquared/account'
|
6
6
|
|
7
7
|
module Gosquared
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
8
|
+
VERSION = '3.0.7'.freeze
|
9
|
+
|
10
|
+
class RubyLibrary
|
11
|
+
def initialize(api_key, site_id)
|
12
|
+
@api_key = api_key
|
13
|
+
@site_id = site_id
|
14
|
+
raise 'api key cannot be empty/nil' if api_key.nil? || api_key.empty?
|
15
|
+
raise 'site_token cannot be empty/nil' if site_id.nil? || site_id.empty?
|
16
|
+
end
|
17
|
+
|
18
|
+
def trends
|
19
|
+
@trends ||= Gosquared::Trends.new(@api_key, @site_id)
|
20
|
+
end
|
21
|
+
|
22
|
+
def tracking
|
23
|
+
@tracking ||= Gosquared::Tracking.new(@api_key, @site_id)
|
24
|
+
end
|
25
|
+
|
26
|
+
def people
|
27
|
+
@people ||= Gosquared::People.new(@api_key, @site_id)
|
28
|
+
end
|
29
|
+
|
30
|
+
def now
|
31
|
+
@now ||= Gosquared::Now.new(@api_key, @site_id)
|
32
|
+
end
|
33
|
+
|
34
|
+
def account
|
35
|
+
@account ||= Gosquared::Account.new(@api_key, @site_id)
|
36
|
+
end
|
37
|
+
end
|
41
38
|
end
|
42
39
|
|
43
40
|
module GoSquared
|
44
|
-
|
41
|
+
include Gosquared
|
45
42
|
end
|
data/lib/gosquared/account.rb
CHANGED
@@ -3,8 +3,8 @@ require_relative 'client'
|
|
3
3
|
module Gosquared
|
4
4
|
class Account
|
5
5
|
BASEURL = 'https://api.gosquared.com/account/v1/'.freeze
|
6
|
-
DIMENSIONS = %w
|
7
|
-
DIMENSION_FILTER = %w
|
6
|
+
DIMENSIONS = %w[blocked feeds reportPreferences sharedUsers sites taggedVisitors triggerTypes webhooks].freeze
|
7
|
+
DIMENSION_FILTER = %w[token webhookID visitorID triggerType].freeze
|
8
8
|
@@filters = { presenter: @presenter, ip: @ip, url: @url, email: @email }
|
9
9
|
|
10
10
|
def initialize(api_key, site_token, client = Gosquared::Client.new)
|
data/lib/gosquared/client.rb
CHANGED
@@ -4,67 +4,65 @@ require 'json'
|
|
4
4
|
|
5
5
|
module Gosquared
|
6
6
|
class Client
|
7
|
+
def get(url)
|
8
|
+
uri = URI(url)
|
9
|
+
begin
|
10
|
+
response = Net::HTTP.get(uri)
|
11
|
+
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
|
12
|
+
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
|
13
|
+
puts "[error] HTTP error: #{e}"
|
14
|
+
begin
|
15
|
+
JSON.parse(response)
|
16
|
+
rescue StandardError => e
|
17
|
+
puts '[error] StandardError: Could not parse JSON'
|
18
|
+
response = false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
@data = JSON.parse(response) if response
|
22
|
+
end
|
7
23
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
+
def post(url, data)
|
25
|
+
uri = URI.parse(url)
|
26
|
+
begin
|
27
|
+
https = Net::HTTP.new(uri.host, uri.port)
|
28
|
+
https.use_ssl = true
|
29
|
+
request = Net::HTTP::Post.new(uri.request_uri, initheader = { 'Content-Type' => 'application/json', 'User-Agent' => 'ruby-client/' + VERSION })
|
30
|
+
request.body = "[#{data.to_json}]"
|
31
|
+
response = https.request(request)
|
32
|
+
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
|
33
|
+
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
|
34
|
+
puts "[error] HTTP error: #{e}"
|
35
|
+
begin
|
36
|
+
response.message
|
37
|
+
rescue StandardError => e
|
38
|
+
puts '[error] StandardError: Could not print response message'
|
39
|
+
response = false
|
40
|
+
end
|
41
|
+
end
|
24
42
|
|
25
|
-
|
26
|
-
uri = URI.parse(url)
|
27
|
-
begin
|
28
|
-
https = Net::HTTP.new(uri.host, uri.port)
|
29
|
-
https.use_ssl = true
|
30
|
-
request = Net::HTTP::Post.new(uri.request_uri, initheader = {'Content-Type' =>'application/json', 'User-Agent' => 'ruby-client/'+ VERSION})
|
31
|
-
request.body = "[#{data.to_json}]"
|
32
|
-
response = https.request(request)
|
33
|
-
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
|
34
|
-
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
|
35
|
-
puts "[error] HTTP error: #{e}"
|
36
|
-
begin
|
37
|
-
response.message
|
38
|
-
rescue StandardError => e
|
39
|
-
puts "[error] StandardError: Could not print response message"
|
40
|
-
response = false
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
response
|
43
|
+
response
|
45
44
|
end
|
46
45
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
response
|
67
|
-
end
|
46
|
+
def delete(url, data={})
|
47
|
+
uri = URI.parse(url)
|
48
|
+
begin
|
49
|
+
https = Net::HTTP.new(uri.host, uri.port)
|
50
|
+
https.use_ssl = true
|
51
|
+
request = Net::HTTP::Delete.new(uri.request_uri, initheader = { 'Content-Type' => 'application/json' })
|
52
|
+
request.body = "[#{data.to_json}]"
|
53
|
+
response = https.request(request)
|
54
|
+
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
|
55
|
+
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
|
56
|
+
puts "[error] HTTP error: #{e}"
|
57
|
+
begin
|
58
|
+
response.message
|
59
|
+
rescue StandardError => e
|
60
|
+
puts '[error] StandardError: Could not print response message'
|
61
|
+
response = false
|
62
|
+
end
|
63
|
+
end
|
68
64
|
|
65
|
+
response
|
66
|
+
end
|
69
67
|
end
|
70
68
|
end
|
data/lib/gosquared/now.rb
CHANGED
@@ -1,53 +1,50 @@
|
|
1
|
-
require_relative
|
1
|
+
require_relative 'client'
|
2
2
|
|
3
3
|
module Gosquared
|
4
4
|
class Now
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
@url = @url.concat(parameters)
|
50
|
-
end
|
51
|
-
|
5
|
+
BASEURL = 'https://api.gosquared.com/now/v3/'.freeze
|
6
|
+
DIMENSIONS = %w[browsers campaigns concurrents engagement geo languages notifications
|
7
|
+
organisations overview pages platforms sources time timeSeries visitors].freeze
|
8
|
+
@@filters = { date_format: @date_format, from: @from, to: @to,
|
9
|
+
format: @format, limit: @limit, sort: @sort,
|
10
|
+
presenter: @presenter, visitors_mode: @string, href: @href,
|
11
|
+
drill_limit: @drill_limit, sections: @sections,
|
12
|
+
minimal: @minimal, interval: @interval }
|
13
|
+
|
14
|
+
def initialize(api_key, site_token, client = Gosquared::Client.new)
|
15
|
+
@site_token = site_token
|
16
|
+
@api_key = api_key
|
17
|
+
@client = client
|
18
|
+
end
|
19
|
+
|
20
|
+
DIMENSIONS.each do |dimension|
|
21
|
+
define_method dimension do
|
22
|
+
@dimension = dimension
|
23
|
+
self
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
@@filters.each do |key, _value|
|
28
|
+
define_method key do |argument|
|
29
|
+
@@filters[key] = argument
|
30
|
+
self
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def fetch
|
35
|
+
data = @client.get(url)
|
36
|
+
@@filters.each { |key, _value| @@filters[key] = nil } if data
|
37
|
+
data
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def url
|
43
|
+
array = ['']
|
44
|
+
@url = BASEURL + @dimension + "?api_key=#{@api_key}" + "&site_token=#{@site_token}"
|
45
|
+
@@filters.each { |key, value| array << "#{key}=#{value}" if value }
|
46
|
+
parameters = array.join('&')
|
47
|
+
@url = @url.concat(parameters)
|
48
|
+
end
|
52
49
|
end
|
53
50
|
end
|
data/lib/gosquared/people.rb
CHANGED
@@ -1,74 +1,76 @@
|
|
1
|
-
require_relative
|
1
|
+
require_relative 'client'
|
2
2
|
|
3
3
|
module Gosquared
|
4
4
|
class People
|
5
|
+
BASEURL = 'https://api.gosquared.com/people/v1/'.freeze
|
6
|
+
VERSION = %w[v1 v2 v3].freeze
|
7
|
+
DIMENSIONS = %w[devices eventTypes people propertyTypes feed].freeze
|
8
|
+
@@filters = { query: @query, filters: @filters, sort: @sort,
|
9
|
+
format: @presenter, limit: @limit, type: @type, from: @from, to: @to }
|
5
10
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
+
def initialize(api_key, site_token)
|
12
|
+
@site_token = site_token
|
13
|
+
@api_key = api_key
|
14
|
+
@person_id = ''
|
15
|
+
@person_filter = ''
|
16
|
+
end
|
11
17
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
DIMENSIONS.each do |dimension|
|
20
|
-
define_method dimension do |options = ""|
|
21
|
-
@dimension = dimension
|
22
|
-
@data = options
|
23
|
-
self
|
24
|
-
end
|
25
|
-
end
|
18
|
+
DIMENSIONS.each do |dimension|
|
19
|
+
define_method dimension do |options = ''|
|
20
|
+
@dimension = dimension
|
21
|
+
@data = options
|
22
|
+
self
|
23
|
+
end
|
24
|
+
end
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
self
|
32
|
-
end
|
26
|
+
@@filters.each do |key, _value|
|
27
|
+
define_method key do |argument|
|
28
|
+
@@filters[key] = argument
|
29
|
+
self
|
33
30
|
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def person_id(object, filter=nil)
|
34
|
+
@person_id = '/' + object
|
35
|
+
@person_filter = '/' + filter if filter
|
36
|
+
self
|
37
|
+
end
|
34
38
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
39
|
+
def smartgroups(group_id = nil, filter = nil)
|
40
|
+
if group_id
|
41
|
+
@dimension = "smartgroups/#{group_id}/people" if filter == 'people'
|
42
|
+
@dimension = "smartgroups/#{group_id}/count/latest" if filter == 'count'
|
43
|
+
else @dimension = 'smartgroups'
|
44
|
+
end
|
45
|
+
self
|
46
|
+
end
|
40
47
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
47
|
-
self
|
48
|
-
end
|
48
|
+
def fetch
|
49
|
+
data = Client.new.get(url)
|
50
|
+
@@filters.each { |key, _value| @@filters[key] = nil } if data
|
51
|
+
data
|
52
|
+
end
|
49
53
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
data
|
54
|
-
end
|
54
|
+
def delete
|
55
|
+
response = Client.new.delete(url)
|
56
|
+
end
|
55
57
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
if @dimension==
|
62
|
-
json_object=JSON.generate(value)
|
63
|
-
filter_request=URI.escape(json_object, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
|
58
|
+
def url
|
59
|
+
array = ['']
|
60
|
+
url = BASEURL + @dimension + @person_id + @person_filter +
|
61
|
+
"?api_key=#{@api_key}" + "&site_token=#{@site_token}"
|
62
|
+
@@filters.each do |key, value|
|
63
|
+
if @dimension == 'people' && key == :filters && value.is_a?(Array)
|
64
|
+
json_object = JSON.generate(value)
|
65
|
+
filter_request = URI.escape(json_object, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
|
64
66
|
array << "#{key}=#{filter_request}"
|
65
67
|
else
|
66
68
|
array << "#{key}=#{value}" if value
|
67
69
|
end
|
68
70
|
end
|
69
|
-
parameters=array.join('&')
|
71
|
+
parameters = array.join('&')
|
70
72
|
url.concat(parameters)
|
71
|
-
|
73
|
+
end
|
72
74
|
|
73
75
|
def post
|
74
76
|
check_for_nil_user
|
@@ -78,11 +80,10 @@ module Gosquared
|
|
78
80
|
end
|
79
81
|
|
80
82
|
def check_for_nil_user
|
81
|
-
if @data.key?(:person_id) && @data[:person_id]
|
82
|
-
@data.tap { |
|
83
|
+
if @data.key?(:person_id) && @data[:person_id].nil?
|
84
|
+
@data.tap { |_data| @data.delete(:person_id) }
|
83
85
|
warn 'person_id is nil, event will not be track against a user'
|
84
86
|
end
|
85
87
|
end
|
86
|
-
|
87
88
|
end
|
88
89
|
end
|