algoliasearch 1.25.1 → 1.25.2

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
  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