algoliasearch 1.25.1 → 1.25.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a77aef57bbeca95474fd29c0225b2488c5f42814fcd19e74793576995a6ebe7
4
- data.tar.gz: d29e32e30273eb6f7a524b869670503899904d53c428a630559049914d746a15
3
+ metadata.gz: e8ca787d62b4f0df0b2147df5b2163076c29a3a99a450dd79e1bed442a1c11af
4
+ data.tar.gz: 914dae2a9d0af62c354a16224867298f5c29a751062d555d23fdfb2cd86f5672
5
5
  SHA512:
6
- metadata.gz: 27a3ab56a594fb8a0824c5ac4f6566ff91b7270c2a9014b871fd99e3c2106230dd0ba3d4ac9056bebae29efc8bf206da18d14282a4c6a67998c78c13f9e12195
7
- data.tar.gz: 53d82eeddc8c521feb332008a5b64be8036e38b20f9a4f757b1356949c60f2f260f178692d33fac302cbe21e2b09725931d4e2ba3ce7af593b97a517111ba5fd
6
+ metadata.gz: a45d614a97620019f79d9fc17740da96a0819dae4bf09366f5c3f36023220e48a3c05057cd38c2141219097ab9f878f6b33cf39ddb9f4e68d6cce6d11a579a72
7
+ data.tar.gz: 914f928b122ae1540568ce80878a229d6a45b3a88bac84d31114b6858567c10b96b7353307d55a1db310386706cf3e9990afc37bbab3978f7499fc3ff226c3b8
@@ -1,6 +1,10 @@
1
+ ## [1.25.2](https://github.com/algolia/algoliasearch-client-ruby/releases/tag/1.25.2) (2018-12-19)
2
+
1
3
  ## [1.25.1](https://github.com/algolia/algoliasearch-client-ruby/releases/tag/1.25.1) (2018-12-19)
2
4
 
3
- * Fix gemspec definition
5
+ **Fixed**
6
+
7
+ * Missing `insights.rb` in gemspec - [7d2f3ab](https://github.com/algolia/algoliasearch-client-ruby/commit/7d2f3abe6e4338f0f7364f6f52ac1d371f066464)
4
8
 
5
9
  ## [1.25.0](https://github.com/algolia/algoliasearch-client-ruby/releases/tag/1.25.0) (2018-12-19)
6
10
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- algoliasearch (1.25.0)
4
+ algoliasearch (1.25.2)
5
5
  httpclient (~> 2.8, >= 2.8.3)
6
6
  json (>= 1.5.1)
7
7
 
@@ -9,25 +9,24 @@ GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
11
  addressable (2.4.0)
12
- backports (3.11.1)
13
- coveralls (0.7.2)
14
- multi_json (~> 1.3)
15
- rest-client (= 1.6.7)
16
- simplecov (>= 0.7)
17
- term-ansicolor (= 1.2.2)
18
- thor (= 0.18.1)
12
+ backports (3.11.4)
13
+ coveralls (0.8.22)
14
+ json (>= 1.8, < 3)
15
+ simplecov (~> 0.16.1)
16
+ term-ansicolor (~> 1.3)
17
+ thor (~> 0.19.4)
18
+ tins (~> 1.6)
19
19
  crack (0.4.3)
20
20
  safe_yaml (~> 1.0.0)
21
21
  diff-lcs (1.3)
22
- docile (1.3.0)
22
+ docile (1.3.1)
23
23
  ethon (0.11.0)
24
24
  ffi (>= 1.3.0)
25
- faraday (0.14.0)
25
+ faraday (0.15.4)
26
26
  multipart-post (>= 1.2, < 3)
27
27
  faraday_middleware (0.12.2)
28
28
  faraday (>= 0.7.4, < 1.0)
29
- ffi (1.9.23)
30
- ffi2-generators (0.1.1)
29
+ ffi (1.9.25)
31
30
  gh (0.15.1)
32
31
  addressable (~> 2.4.0)
33
32
  backports
@@ -36,12 +35,11 @@ GEM
36
35
  net-http-persistent (~> 2.9)
37
36
  net-http-pipeline
38
37
  hashdiff (0.3.7)
39
- highline (1.6.21)
38
+ highline (1.7.10)
40
39
  httpclient (2.8.3)
41
40
  json (2.1.0)
42
41
  launchy (2.4.3)
43
42
  addressable (~> 2.3)
44
- mime-types (1.25.1)
45
43
  multi_json (1.13.1)
46
44
  multipart-post (2.0.0)
47
45
  net-http-persistent (2.9.4)
@@ -50,235 +48,31 @@ GEM
50
48
  json
51
49
  websocket (~> 1.0)
52
50
  rake (12.3.1)
53
- rdoc (6.0.3)
54
- rest-client (1.6.7)
55
- mime-types (>= 1.16)
56
- rspec (3.7.0)
57
- rspec-core (~> 3.7.0)
58
- rspec-expectations (~> 3.7.0)
59
- rspec-mocks (~> 3.7.0)
60
- rspec-core (3.7.1)
61
- rspec-support (~> 3.7.0)
62
- rspec-expectations (3.7.0)
51
+ rdoc (6.0.4)
52
+ rspec (3.8.0)
53
+ rspec-core (~> 3.8.0)
54
+ rspec-expectations (~> 3.8.0)
55
+ rspec-mocks (~> 3.8.0)
56
+ rspec-core (3.8.0)
57
+ rspec-support (~> 3.8.0)
58
+ rspec-expectations (3.8.2)
63
59
  diff-lcs (>= 1.2.0, < 2.0)
64
- rspec-support (~> 3.7.0)
65
- rspec-mocks (3.7.0)
60
+ rspec-support (~> 3.8.0)
61
+ rspec-mocks (3.8.0)
66
62
  diff-lcs (>= 1.2.0, < 2.0)
67
- rspec-support (~> 3.7.0)
68
- rspec-support (3.7.1)
69
- rubysl (2.2.0)
70
- rubysl-abbrev (~> 2.0)
71
- rubysl-base64 (~> 2.0)
72
- rubysl-benchmark (~> 2.0)
73
- rubysl-bigdecimal (~> 2.0)
74
- rubysl-cgi (~> 2.0)
75
- rubysl-cgi-session (~> 2.0)
76
- rubysl-cmath (~> 2.0)
77
- rubysl-complex (~> 2.0)
78
- rubysl-continuation (~> 2.0)
79
- rubysl-coverage (~> 2.0)
80
- rubysl-csv (~> 2.0)
81
- rubysl-curses (~> 2.0)
82
- rubysl-date (~> 2.0)
83
- rubysl-delegate (~> 2.0)
84
- rubysl-digest (~> 2.0)
85
- rubysl-drb (~> 2.0)
86
- rubysl-e2mmap (~> 2.0)
87
- rubysl-english (~> 2.0)
88
- rubysl-enumerator (~> 2.0)
89
- rubysl-erb (~> 2.0)
90
- rubysl-etc (~> 2.0)
91
- rubysl-expect (~> 2.0)
92
- rubysl-fcntl (~> 2.0)
93
- rubysl-fiber (~> 2.0)
94
- rubysl-fileutils (~> 2.0)
95
- rubysl-find (~> 2.0)
96
- rubysl-forwardable (~> 2.0)
97
- rubysl-getoptlong (~> 2.0)
98
- rubysl-gserver (~> 2.0)
99
- rubysl-io-console (~> 2.0)
100
- rubysl-io-nonblock (~> 2.0)
101
- rubysl-io-wait (~> 2.0)
102
- rubysl-ipaddr (~> 2.0)
103
- rubysl-irb (~> 2.1)
104
- rubysl-logger (~> 2.0)
105
- rubysl-mathn (~> 2.0)
106
- rubysl-matrix (~> 2.0)
107
- rubysl-mkmf (~> 2.0)
108
- rubysl-monitor (~> 2.0)
109
- rubysl-mutex_m (~> 2.0)
110
- rubysl-net-ftp (~> 2.0)
111
- rubysl-net-http (~> 2.0)
112
- rubysl-net-imap (~> 2.0)
113
- rubysl-net-pop (~> 2.0)
114
- rubysl-net-protocol (~> 2.0)
115
- rubysl-net-smtp (~> 2.0)
116
- rubysl-net-telnet (~> 2.0)
117
- rubysl-nkf (~> 2.0)
118
- rubysl-observer (~> 2.0)
119
- rubysl-open-uri (~> 2.0)
120
- rubysl-open3 (~> 2.0)
121
- rubysl-openssl (~> 2.0)
122
- rubysl-optparse (~> 2.0)
123
- rubysl-ostruct (~> 2.0)
124
- rubysl-pathname (~> 2.0)
125
- rubysl-prettyprint (~> 2.0)
126
- rubysl-prime (~> 2.0)
127
- rubysl-profile (~> 2.0)
128
- rubysl-profiler (~> 2.0)
129
- rubysl-pstore (~> 2.0)
130
- rubysl-pty (~> 2.0)
131
- rubysl-rational (~> 2.0)
132
- rubysl-resolv (~> 2.0)
133
- rubysl-rexml (~> 2.0)
134
- rubysl-rinda (~> 2.0)
135
- rubysl-rss (~> 2.0)
136
- rubysl-scanf (~> 2.0)
137
- rubysl-securerandom (~> 2.0)
138
- rubysl-set (~> 2.0)
139
- rubysl-shellwords (~> 2.0)
140
- rubysl-singleton (~> 2.0)
141
- rubysl-socket (~> 2.0)
142
- rubysl-stringio (~> 2.0)
143
- rubysl-strscan (~> 2.0)
144
- rubysl-sync (~> 2.0)
145
- rubysl-syslog (~> 2.0)
146
- rubysl-tempfile (~> 2.0)
147
- rubysl-thread (~> 2.0)
148
- rubysl-thwait (~> 2.0)
149
- rubysl-time (~> 2.0)
150
- rubysl-timeout (~> 2.0)
151
- rubysl-tmpdir (~> 2.0)
152
- rubysl-tsort (~> 2.0)
153
- rubysl-un (~> 2.0)
154
- rubysl-unicode_normalize (~> 2.0)
155
- rubysl-uri (~> 2.0)
156
- rubysl-weakref (~> 2.0)
157
- rubysl-webrick (~> 2.0)
158
- rubysl-xmlrpc (~> 2.0)
159
- rubysl-yaml (~> 2.0)
160
- rubysl-zlib (~> 2.0)
161
- rubysl-abbrev (2.0.4)
162
- rubysl-base64 (2.0.0)
163
- rubysl-benchmark (2.0.1)
164
- rubysl-bigdecimal (2.0.2)
165
- rubysl-cgi (2.0.1)
166
- rubysl-cgi-session (2.1.0)
167
- rubysl-cmath (2.0.0)
168
- rubysl-complex (2.0.0)
169
- rubysl-continuation (2.0.0)
170
- rubysl-coverage (2.1)
171
- rubysl-csv (2.0.2)
172
- rubysl-english (~> 2.0)
173
- rubysl-curses (2.0.1)
174
- rubysl-date (2.0.9)
175
- rubysl-delegate (2.0.1)
176
- rubysl-digest (2.0.8)
177
- rubysl-drb (2.0.1)
178
- rubysl-e2mmap (2.0.0)
179
- rubysl-english (2.0.0)
180
- rubysl-enumerator (2.0.0)
181
- rubysl-erb (2.0.2)
182
- rubysl-etc (2.0.3)
183
- ffi2-generators (~> 0.1)
184
- rubysl-expect (2.0.0)
185
- rubysl-fcntl (2.0.4)
186
- ffi2-generators (~> 0.1)
187
- rubysl-fiber (2.0.0)
188
- rubysl-fileutils (2.0.3)
189
- rubysl-find (2.0.1)
190
- rubysl-forwardable (2.0.1)
191
- rubysl-getoptlong (2.0.0)
192
- rubysl-gserver (2.0.0)
193
- rubysl-socket (~> 2.0)
194
- rubysl-thread (~> 2.0)
195
- rubysl-io-console (2.0.0)
196
- rubysl-io-nonblock (2.0.0)
197
- rubysl-io-wait (2.0.0)
198
- rubysl-ipaddr (2.0.0)
199
- rubysl-irb (2.1.1)
200
- rubysl-e2mmap (~> 2.0)
201
- rubysl-mathn (~> 2.0)
202
- rubysl-thread (~> 2.0)
203
- rubysl-logger (2.1.0)
204
- rubysl-mathn (2.0.0)
205
- rubysl-matrix (2.1.0)
206
- rubysl-e2mmap (~> 2.0)
207
- rubysl-mkmf (2.1)
208
- rubysl-fileutils (~> 2.0)
209
- rubysl-shellwords (~> 2.0)
210
- rubysl-monitor (2.1)
211
- rubysl-mutex_m (2.0.0)
212
- rubysl-net-ftp (2.0.1)
213
- rubysl-net-http (2.0.4)
214
- rubysl-cgi (~> 2.0)
215
- rubysl-erb (~> 2.0)
216
- rubysl-singleton (~> 2.0)
217
- rubysl-net-imap (2.0.1)
218
- rubysl-net-pop (2.0.1)
219
- rubysl-net-protocol (2.0.1)
220
- rubysl-net-smtp (2.0.1)
221
- rubysl-net-telnet (2.0.0)
222
- rubysl-nkf (2.0.1)
223
- rubysl-observer (2.0.0)
224
- rubysl-open-uri (2.0.0)
225
- rubysl-open3 (2.0.0)
226
- rubysl-openssl (2.10)
227
- rubysl-optparse (2.0.1)
228
- rubysl-shellwords (~> 2.0)
229
- rubysl-ostruct (2.1.0)
230
- rubysl-pathname (2.3)
231
- rubysl-prettyprint (2.0.3)
232
- rubysl-prime (2.0.1)
233
- rubysl-profile (2.0.0)
234
- rubysl-profiler (2.1)
235
- rubysl-pstore (2.0.0)
236
- rubysl-pty (2.0.3)
237
- rubysl-rational (2.0.1)
238
- rubysl-resolv (2.1.2)
239
- rubysl-rexml (2.0.4)
240
- rubysl-rinda (2.0.1)
241
- rubysl-rss (2.0.0)
242
- rubysl-scanf (2.0.0)
243
- rubysl-securerandom (2.0.0)
244
- rubysl-set (2.0.1)
245
- rubysl-shellwords (2.0.0)
246
- rubysl-singleton (2.0.0)
247
- rubysl-socket (2.2.1)
248
- rubysl-fcntl (~> 2.0)
249
- rubysl-stringio (2.2)
250
- rubysl-strscan (2.0.0)
251
- rubysl-sync (2.0.0)
252
- rubysl-syslog (2.1.0)
253
- ffi2-generators (~> 0.1)
254
- rubysl-tempfile (2.0.1)
255
- rubysl-thread (2.1)
256
- rubysl-thwait (2.0.0)
257
- rubysl-time (2.0.3)
258
- rubysl-timeout (2.0.0)
259
- rubysl-tmpdir (2.0.1)
260
- rubysl-tsort (2.0.1)
261
- rubysl-un (2.0.0)
262
- rubysl-fileutils (~> 2.0)
263
- rubysl-optparse (~> 2.0)
264
- rubysl-unicode_normalize (2.0)
265
- rubysl-uri (2.0.0)
266
- rubysl-weakref (2.0.0)
267
- rubysl-webrick (2.0.0)
268
- rubysl-xmlrpc (2.0.0)
269
- rubysl-yaml (2.1.0)
270
- rubysl-zlib (2.0.1)
63
+ rspec-support (~> 3.8.0)
64
+ rspec-support (3.8.0)
271
65
  safe_yaml (1.0.4)
272
66
  simplecov (0.16.1)
273
67
  docile (~> 1.1)
274
68
  json (>= 1.8, < 3)
275
69
  simplecov-html (~> 0.10.0)
276
70
  simplecov-html (0.10.2)
277
- term-ansicolor (1.2.2)
278
- tins (~> 0.8)
279
- thor (0.18.1)
280
- tins (0.13.2)
281
- travis (1.8.8)
71
+ term-ansicolor (1.7.0)
72
+ tins (~> 1.0)
73
+ thor (0.19.4)
74
+ tins (1.20.2)
75
+ travis (1.8.9)
282
76
  backports
283
77
  faraday (~> 0.9)
284
78
  faraday_middleware (~> 0.9, >= 0.9.1)
@@ -289,11 +83,11 @@ GEM
289
83
  typhoeus (~> 0.6, >= 0.6.8)
290
84
  typhoeus (0.8.0)
291
85
  ethon (>= 0.8.0)
292
- webmock (3.3.0)
86
+ webmock (3.4.2)
293
87
  addressable (>= 2.3.6)
294
88
  crack (>= 0.3.2)
295
89
  hashdiff
296
- websocket (1.2.5)
90
+ websocket (1.2.8)
297
91
 
298
92
  PLATFORMS
299
93
  ruby
@@ -310,4 +104,4 @@ DEPENDENCIES
310
104
  webmock
311
105
 
312
106
  BUNDLED WITH
313
- 1.16.6
107
+ 1.17.2
@@ -47,6 +47,7 @@ Gem::Specification.new do |s|
47
47
  "lib/algolia/client.rb",
48
48
  "lib/algolia/error.rb",
49
49
  "lib/algolia/index.rb",
50
+ "lib/algolia/insights.rb",
50
51
  "lib/algolia/protocol.rb",
51
52
  "lib/algolia/version.rb",
52
53
  "lib/algolia/webmock.rb",
@@ -0,0 +1,131 @@
1
+ module Algolia
2
+
3
+ class Insights
4
+ MIN_RUBY_VERSION = '1.9.0'
5
+
6
+ def initialize(app_id, api_key, region = 'us', params = {})
7
+ headers = params[:headers] || {}
8
+ @app_id = app_id
9
+ @api_key = api_key
10
+ @url = "https://insights.#{region}.algolia.io"
11
+ @headers = headers.merge({
12
+ Protocol::HEADER_APP_ID => app_id,
13
+ Protocol::HEADER_API_KEY => api_key,
14
+ 'Content-Type' => 'application/json; charset=utf-8',
15
+ 'User-Agent' => ["Algolia for Ruby (#{::Algolia::VERSION})", "Ruby (#{RUBY_VERSION})"].join('; ')
16
+ })
17
+ end
18
+
19
+ def user(user_token)
20
+ UserInsights.new(self, user_token)
21
+ end
22
+
23
+ def send_event(event)
24
+ send_events([event])
25
+ end
26
+
27
+ def send_events(events)
28
+ perform_request(:POST, '/1/events', {}, { 'events' => events }.to_json)
29
+ end
30
+
31
+ private
32
+
33
+ def perform_request(method, path, params = {}, data = {})
34
+ http = HTTPClient.new
35
+
36
+ url = @url + path
37
+
38
+ encoded_params = Hash[params.map { |k, v| [k.to_s, v.is_a?(Array) ? v.to_json : v] }]
39
+ url << "?" + Protocol.to_query(encoded_params)
40
+
41
+ response = case method
42
+ when :POST
43
+ http.post(url, { :body => data, :header => @headers })
44
+ end
45
+
46
+ if response.code / 100 != 2
47
+ raise AlgoliaProtocolError.new(response.code, "Cannot #{method} to #{url}: #{response.content}")
48
+ end
49
+
50
+ JSON.parse(response.content)
51
+ end
52
+ end
53
+
54
+ class UserInsights
55
+ def initialize(insights, user_token)
56
+ @insights = insights
57
+ @user_token = user_token
58
+ end
59
+
60
+ def clicked_object_ids(event_name, index_name, object_ids, request_options = {})
61
+ clicked({ 'objectIDs' => object_ids }, event_name, index_name, request_options)
62
+ end
63
+
64
+ def clicked_object_ids_after_search(event_name, index_name, object_ids, positions, query_id, request_options = {})
65
+ clicked({
66
+ 'objectIDs' => object_ids,
67
+ 'positions' => positions,
68
+ 'queryID' => query_id,
69
+ }, event_name, index_name, request_options)
70
+ end
71
+
72
+ def clicked_filters(event_name, index_name, filters, request_options = {})
73
+ clicked({ 'filters' => filters }, event_name, index_name, request_options)
74
+ end
75
+
76
+ def converted_object_ids(event_name, index_name, object_ids, request_options = {})
77
+ converted({ 'objectIDs' => object_ids }, event_name, index_name, request_options)
78
+ end
79
+
80
+ def converted_object_ids_after_search(event_name, index_name, object_ids, query_id, request_options = {})
81
+ converted({
82
+ 'objectIDs' => object_ids,
83
+ 'queryID' => query_id,
84
+ }, event_name, index_name, request_options)
85
+ end
86
+
87
+ def converted_filters(event_name, index_name, filters, request_options = {})
88
+ converted({ 'filters' => filters }, event_name, index_name, request_options)
89
+ end
90
+
91
+ def viewed_object_ids(event_name, index_name, object_ids, request_options = {})
92
+ viewed({ 'objectIDs' => object_ids }, event_name, index_name, request_options)
93
+ end
94
+
95
+ def viewed_filters(event_name, index_name, filters, request_options = {})
96
+ viewed({ 'filters' => filters }, event_name, index_name, request_options)
97
+ end
98
+
99
+ private
100
+
101
+ def clicked(event, event_name, index_name, request_options = {})
102
+ send_event(event.merge({
103
+ 'eventType' => 'click',
104
+ 'eventName' => event_name,
105
+ 'index' => index_name,
106
+ }))
107
+ end
108
+
109
+ def converted(event, event_name, index_name, request_options = {})
110
+ send_event(event.merge({
111
+ 'eventType' => 'conversion',
112
+ 'eventName' => event_name,
113
+ 'index' => index_name,
114
+ }))
115
+ end
116
+
117
+ def viewed(event, event_name, index_name, request_options = {})
118
+ send_event(event.merge({
119
+ 'eventType' => 'view',
120
+ 'eventName' => event_name,
121
+ 'index' => index_name,
122
+ }))
123
+ end
124
+
125
+ def send_event(event)
126
+ @insights.send_event(event.merge({ 'userToken' => @user_token}))
127
+ end
128
+
129
+ end
130
+
131
+ end
@@ -1,3 +1,3 @@
1
1
  module Algolia
2
- VERSION = "1.25.1"
2
+ VERSION = "1.25.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: algoliasearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.25.1
4
+ version: 1.25.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Algolia
@@ -110,6 +110,7 @@ files:
110
110
  - lib/algolia/client.rb
111
111
  - lib/algolia/error.rb
112
112
  - lib/algolia/index.rb
113
+ - lib/algolia/insights.rb
113
114
  - lib/algolia/protocol.rb
114
115
  - lib/algolia/version.rb
115
116
  - lib/algolia/webmock.rb