gosquared 3.0.7 → 3.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|