gosquared 3.0.4 → 3.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 190af14d102193d71cd19ee272100216f2192fae
4
- data.tar.gz: d736e2f7d7fc41c69e98628fe6886144f00e2744
3
+ metadata.gz: 4b08adf61eaf083d34f944c45d22f919be153296
4
+ data.tar.gz: c80660918a18f39b0b0d39ca683e9c7724a0c3c7
5
5
  SHA512:
6
- metadata.gz: 6f050ba2156fb41fe186a622b04162446b0eb80de08b47617a89ed7babfad4b16ebf4d7e5572f4670dc7712387fad73c9bb04d526f3a0c7ea9c7d25bdf15fc87
7
- data.tar.gz: a8393ddb2aa97c3a116a6270423f6fba3c880f3646927ce545e9faf60c73b7f120fedc4e725fefa82f20b875798152b14ada071571740d2207d8f71aa5fccaf7
6
+ metadata.gz: f94fd4812bcc3261561e7156732e5cefb686e74c8ea116dd78e2097821cb03d4b41baa55aa4892556626009b6e18e95c0f8f79c00b05df61dc624bd96158e16a
7
+ data.tar.gz: e7da126fc50218f2d2ea58e876eccf7707c065ceae7cd103ea6853bd67bb5bd0227521a71ac43a402eda915478554105e68241ff2fbd2bdad35512ff0e944389
data/Gemfile CHANGED
@@ -1,8 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- ruby '2.2.2'
3
+ ruby '2.7.2'
4
4
 
5
5
  group :development, :test do
6
6
  gem 'rspec'
7
- gem 'webmock'
7
+ gem 'webmock', ">= 2.3"
8
8
  end
@@ -1,43 +1,42 @@
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"
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
- class RubyLibrary
10
-
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
-
38
- end
8
+ VERSION = '3.1.0'.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
39
38
  end
40
39
 
41
40
  module GoSquared
42
- include Gosquared
41
+ include Gosquared
43
42
  end
@@ -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(blocked feeds reportPreferences sharedUsers sites taggedVisitors triggerTypes webhooks).freeze
7
- DIMENSION_FILTER = %w(token webhookID visitorID triggerType).freeze
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)
@@ -4,67 +4,64 @@ 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
- def get(url)
9
- uri = URI(url)
10
- begin
11
- response = Net::HTTP.get(uri)
12
- rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
13
- Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
14
- puts "[error] HTTP error: #{e}"
15
- begin
16
- JSON.parse(response)
17
- rescue StandardError => e
18
- puts "[error] StandardError: Could not parse JSON"
19
- response = false
20
- end
21
- end
22
- @data = JSON.parse(response) if response
23
- end
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
- def post(url,data)
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'})
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
- puts "Response Message: #{response.message}" if response
44
- response
45
- end
46
-
47
- def delete(url,data)
48
- uri = URI.parse(url)
49
- begin
50
- https = Net::HTTP.new(uri.host, uri.port)
51
- https.use_ssl = true
52
- request = Net::HTTP::Delete.new(uri.request_uri, initheader = {'Content-Type' =>'application/json'})
53
- request.body = "[ #{data.to_json} ]"
54
- response = https.request(request)
55
- rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
56
- Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
57
- puts "[error] HTTP error: #{e}"
58
- begin
59
- response.message
60
- rescue StandardError => e
61
- puts "[error] StandardError: Could not print response message"
62
- response = false
63
- end
64
- end
65
- puts "Response Message: #{response.message}" if response
66
- response
43
+ response
67
44
  end
68
45
 
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
64
+ response
65
+ end
69
66
  end
70
67
  end
@@ -1,53 +1,50 @@
1
- require_relative "client"
1
+ require_relative 'client'
2
2
 
3
3
  module Gosquared
4
4
  class Now
5
-
6
- BASEURL = "https://api.gosquared.com/now/v3/".freeze
7
- DIMENSIONS = %w(browsers campaigns concurrents engagement geo languages notifications
8
- organisations overview pages platforms sources time timeSeries visitors).freeze
9
- @@filters = {date_format: @date_format, from: @from, to: @to,
10
- format: @format, limit: @limit, sort: @sort,
11
- presenter: @presenter, visitors_mode: @string, href: @href,
12
- drill_limit: @drill_limit, sections: @sections,
13
- minimal: @minimal, interval: @interval}
14
-
15
- def initialize(api_key, site_token, client = Gosquared::Client.new)
16
- @site_token = site_token
17
- @api_key = api_key
18
- @client = client
19
- end
20
-
21
-
22
- DIMENSIONS.each do |dimension|
23
- define_method dimension do
24
- @dimension = dimension
25
- self
26
- end
27
- end
28
-
29
- @@filters.each do |key, value|
30
- define_method key do |argument|
31
- @@filters[key] = argument
32
- self
33
- end
34
- end
35
-
36
- def fetch
37
- data = @client.get(url)
38
- @@filters.each{|key, value| @@filters[key]=nil} if data
39
- data
40
- end
41
-
42
- private
43
-
44
- def url
45
- array = [""]
46
- @url = BASEURL + @dimension + "?api_key=#{@api_key}" + "&site_token=#{@site_token}"
47
- @@filters.each {|key, value| array << "#{key}=#{value}" if value }
48
- parameters=array.join('&')
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
@@ -1,68 +1,78 @@
1
- require_relative "client"
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
- BASEURL = "https://api.gosquared.com/people/v1/".freeze
7
- VERSION = %w(v1 v2 v3).freeze
8
- DIMENSIONS = %w(devices eventTypes people propertyTypes feed smartgroups).freeze
9
- @@filters = {query: @query, filters: @filters, sort: @sort,
10
- format: @presenter, limit: @limit, type: @type, from: @from, to: @to}
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
- def initialize(api_key, site_token)
13
- @site_token = site_token
14
- @api_key = api_key
15
- @person_id = ""
16
- @person_filter = ""
17
- end
18
+ DIMENSIONS.each do |dimension|
19
+ define_method dimension do |options = ''|
20
+ @dimension = dimension
21
+ @data = options
22
+ self
23
+ end
24
+ end
25
+
26
+ @@filters.each do |key, _value|
27
+ define_method key do |argument|
28
+ @@filters[key] = argument
29
+ self
30
+ end
31
+ end
18
32
 
19
- DIMENSIONS.each do |dimension|
20
- define_method dimension do |options = ""|
21
- @dimension = dimension
22
- @data = options
23
- self
24
- end
25
- end
33
+ def person_id(object, filter=nil)
34
+ @person_id = '/' + object
35
+ @person_filter = '/' + filter if filter
36
+ self
37
+ end
26
38
 
27
- @@filters.each do |key, value|
28
- define_method key do |argument|
29
- @@filters[key] = argument
30
- puts @@filters[key]
31
- self
32
- end
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'
33
44
  end
45
+ self
46
+ end
34
47
 
35
- def person_id(object, filter)
36
- @person_id = "/" + object
37
- @person_filter = "/" + filter
38
- self
39
- end
48
+ def fetch
49
+ data = Client.new.get(url)
50
+ @@filters.each { |key, _value| @@filters[key] = nil } if data
51
+ data
52
+ end
40
53
 
41
- def fetch
42
- data = Client.new.get(url)
43
- @@filters.each{|key, value| @@filters[key]=nil} if data
44
- data
45
- end
54
+ def delete
55
+ response = Client.new.delete(url)
56
+ end
46
57
 
47
- def url
48
- array = [""]
49
- url = BASEURL + @dimension + @person_id + @person_filter +
50
- "?api_key=#{@api_key}" + "&site_token=#{@site_token}"
51
- @@filters.each do |key, value|
52
- if @dimension=="people" && key == :filters && value.is_a?(Array)
53
- json_object=JSON.generate(value)
54
- 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}]"))
55
66
  array << "#{key}=#{filter_request}"
56
67
  else
57
68
  array << "#{key}=#{value}" if value
58
69
  end
59
70
  end
60
- parameters=array.join('&')
71
+ parameters = array.join('&')
61
72
  url.concat(parameters)
62
- end
73
+ end
63
74
 
64
75
  def post
65
- puts @data
66
76
  check_for_nil_user
67
77
  response = Client.new.post(url, @data)
68
78
  @data = nil if response.code === '200'
@@ -70,11 +80,10 @@ module Gosquared
70
80
  end
71
81
 
72
82
  def check_for_nil_user
73
- if @data.key?(:person_id) && @data[:person_id] == nil
74
- @data.tap { |data| @data.delete(:person_id) }
83
+ if @data.key?(:person_id) && @data[:person_id].nil?
84
+ @data.tap { |_data| @data.delete(:person_id) }
75
85
  warn 'person_id is nil, event will not be track against a user'
76
86
  end
77
87
  end
78
-
79
88
  end
80
89
  end