gosquared 3.0.3 → 3.0.4
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/README.md +2 -2
- data/lib/gosquared/people.rb +47 -24
- data/spec/people_spec.rb +33 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 190af14d102193d71cd19ee272100216f2192fae
|
4
|
+
data.tar.gz: d736e2f7d7fc41c69e98628fe6886144f00e2744
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f050ba2156fb41fe186a622b04162446b0eb80de08b47617a89ed7babfad4b16ebf4d7e5572f4670dc7712387fad73c9bb04d526f3a0c7ea9c7d25bdf15fc87
|
7
|
+
data.tar.gz: a8393ddb2aa97c3a116a6270423f6fba3c880f3646927ce545e9faf60c73b7f120fedc4e725fefa82f20b875798152b14ada071571740d2207d8f71aa5fccaf7
|
data/README.md
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/gosquared/ruby-gem)
|
4
4
|
|
5
|
-
**
|
5
|
+
**Please feel free to open an issue if you find anything not working, or to leave feedback for improvement. You can also get in touch directly: russell@gosquared.com**
|
6
6
|
|
7
7
|
This gems works with the [GoSquared API](https://www.gosquared.com/docs/api/), You can use it for both fetching metrics from your GoSquared account and also posting new events and contacts.
|
8
8
|
|
9
|
-
Note
|
9
|
+
**Note:** if you are looking to set up GoSquared for the first time and install Analytics, People CRM and Live Chat within a Rails app, you can do so by using our [GoSquared-Rails gem]
|
10
10
|
(https://github.com/gosquared/gosquared-rails)
|
11
11
|
|
12
12
|
All functions listed in the API documentation are methods you can call on the GoSquared class.
|
data/lib/gosquared/people.rb
CHANGED
@@ -9,12 +9,11 @@ module Gosquared
|
|
9
9
|
@@filters = {query: @query, filters: @filters, sort: @sort,
|
10
10
|
format: @presenter, limit: @limit, type: @type, from: @from, to: @to}
|
11
11
|
|
12
|
-
def initialize(api_key, site_token
|
12
|
+
def initialize(api_key, site_token)
|
13
13
|
@site_token = site_token
|
14
14
|
@api_key = api_key
|
15
15
|
@person_id = ""
|
16
16
|
@person_filter = ""
|
17
|
-
@client = client
|
18
17
|
end
|
19
18
|
|
20
19
|
DIMENSIONS.each do |dimension|
|
@@ -28,30 +27,54 @@ module Gosquared
|
|
28
27
|
@@filters.each do |key, value|
|
29
28
|
define_method key do |argument|
|
30
29
|
@@filters[key] = argument
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
puts @@filters[key]
|
31
|
+
self
|
32
|
+
end
|
33
|
+
end
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
35
|
+
def person_id(object, filter)
|
36
|
+
@person_id = "/" + object
|
37
|
+
@person_filter = "/" + filter
|
38
|
+
self
|
39
|
+
end
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
41
|
+
def fetch
|
42
|
+
data = Client.new.get(url)
|
43
|
+
@@filters.each{|key, value| @@filters[key]=nil} if data
|
44
|
+
data
|
45
|
+
end
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
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}]"))
|
55
|
+
array << "#{key}=#{filter_request}"
|
56
|
+
else
|
57
|
+
array << "#{key}=#{value}" if value
|
58
|
+
end
|
59
|
+
end
|
60
|
+
parameters=array.join('&')
|
61
|
+
url.concat(parameters)
|
62
|
+
end
|
63
|
+
|
64
|
+
def post
|
65
|
+
puts @data
|
66
|
+
check_for_nil_user
|
67
|
+
response = Client.new.post(url, @data)
|
68
|
+
@data = nil if response.code === '200'
|
69
|
+
response
|
70
|
+
end
|
71
|
+
|
72
|
+
def check_for_nil_user
|
73
|
+
if @data.key?(:person_id) && @data[:person_id] == nil
|
74
|
+
@data.tap { |data| @data.delete(:person_id) }
|
75
|
+
warn 'person_id is nil, event will not be track against a user'
|
76
|
+
end
|
77
|
+
end
|
55
78
|
|
56
|
-
|
79
|
+
end
|
57
80
|
end
|
data/spec/people_spec.rb
CHANGED
@@ -13,6 +13,7 @@ describe Gosquared::People do
|
|
13
13
|
|
14
14
|
Gosquared::People::DIMENSIONS.each do |dimension|
|
15
15
|
it "fetches a request from the GoSquared People API with #{dimension} dimension" do
|
16
|
+
next if dimension == "people"
|
16
17
|
gs.send "#{dimension}"
|
17
18
|
expect(gs.fetch).to eq("a" => [{"test"=>"response"}])
|
18
19
|
end
|
@@ -47,5 +48,36 @@ describe Gosquared::People do
|
|
47
48
|
end
|
48
49
|
end
|
49
50
|
|
51
|
+
before do
|
52
|
+
data = '{"a": [{"test": "response"}, {"with": "filters"}]}'
|
53
|
+
stub_request(:get, "https://api.gosquared.com/people/v1/people?api_key=demo&filters=%5B%7B%22key%22:%22property%22,%22path%22:%22last.location.city%22,%22operator%22:%22contains%22,%22value%22:%22london%22%7D,%7B%22key%22:%22and%22,%22filters%22:%5B%7B%22key%22:%22property%22,%22path%22:%22totals.visits%22,%22operator%22:%22%3E%22,%22value%22:%221000%22%7D%5D%7D%5D&site_token=GSN-106863-S").
|
54
|
+
with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Host'=>'api.gosquared.com', 'User-Agent'=>'Ruby'}).
|
55
|
+
to_return(:status => 200, :body => data, :headers => {})
|
56
|
+
end
|
57
|
+
|
58
|
+
it "fetches a request from the GoSquared People API with filtering on properties" do
|
59
|
+
array=[
|
60
|
+
{
|
61
|
+
key: "property",
|
62
|
+
path: "last.location.city",
|
63
|
+
operator: "contains",
|
64
|
+
value: "london"
|
65
|
+
},
|
66
|
+
{
|
67
|
+
key: "and",
|
68
|
+
filters: [
|
69
|
+
{
|
70
|
+
"key": "property",
|
71
|
+
"path": "totals.visits",
|
72
|
+
"operator": ">",
|
73
|
+
"value": "1000"
|
74
|
+
}
|
75
|
+
]
|
76
|
+
}
|
77
|
+
]
|
78
|
+
gs.people.people.filters(array)
|
79
|
+
expect(gs.fetch).to eq("a" => [{"test"=>"response"}, {"with"=>"filters"}])
|
80
|
+
end
|
50
81
|
|
51
|
-
|
82
|
+
|
83
|
+
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Russell Vaughan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -84,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
84
|
version: '0'
|
85
85
|
requirements: []
|
86
86
|
rubyforge_project:
|
87
|
-
rubygems_version: 2.
|
87
|
+
rubygems_version: 2.6.6
|
88
88
|
signing_key:
|
89
89
|
specification_version: 4
|
90
90
|
summary: GoSquared Ruby Library
|