algoliasearch 1.18.5 → 1.19.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 +4 -4
- data/ChangeLog +5 -0
- data/Gemfile.lock +1 -1
- data/Rakefile +18 -12
- data/lib/algolia/client.rb +235 -178
- data/lib/algolia/index.rb +276 -175
- data/lib/algolia/version.rb +1 -1
- data/spec/client_spec.rb +37 -5
- metadata +2 -2
data/lib/algolia/index.rb
CHANGED
@@ -14,17 +14,21 @@ module Algolia
|
|
14
14
|
# Delete an index
|
15
15
|
#
|
16
16
|
# return an hash of the form { "deletedAt" => "2013-01-18T15:33:13.556Z", "taskID" => "42" }
|
17
|
-
|
18
|
-
|
17
|
+
#
|
18
|
+
# @param request_options contains extra parameters to send with your query
|
19
|
+
def delete(request_options = {})
|
20
|
+
client.delete(Protocol.index_uri(name), :write, request_options)
|
19
21
|
end
|
20
22
|
alias_method :delete_index, :delete
|
21
23
|
|
22
24
|
# Delete an index and wait until the deletion has been processed
|
23
25
|
#
|
24
26
|
# return an hash of the form { "deletedAt" => "2013-01-18T15:33:13.556Z", "taskID" => "42" }
|
25
|
-
|
26
|
-
|
27
|
-
|
27
|
+
#
|
28
|
+
# @param request_options contains extra parameters to send with your query
|
29
|
+
def delete!(request_options = {})
|
30
|
+
res = delete(request_options)
|
31
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
28
32
|
res
|
29
33
|
end
|
30
34
|
alias_method :delete_index!, :delete!
|
@@ -35,12 +39,13 @@ module Algolia
|
|
35
39
|
# The object is represented by an associative array
|
36
40
|
# @param objectID (optional) an objectID you want to attribute to this object
|
37
41
|
# (if the attribute already exist the old object will be overridden)
|
38
|
-
|
42
|
+
# @param request_options contains extra parameters to send with your query
|
43
|
+
def add_object(obj, objectID = nil, request_options = {})
|
39
44
|
check_object obj
|
40
45
|
if objectID.nil? || objectID.to_s.empty?
|
41
|
-
client.post(Protocol.index_uri(name), obj.to_json)
|
46
|
+
client.post(Protocol.index_uri(name), obj.to_json, :write, request_options)
|
42
47
|
else
|
43
|
-
client.put(Protocol.object_uri(name, objectID), obj.to_json)
|
48
|
+
client.put(Protocol.object_uri(name, objectID), obj.to_json, :write, request_options)
|
44
49
|
end
|
45
50
|
end
|
46
51
|
|
@@ -50,28 +55,31 @@ module Algolia
|
|
50
55
|
# The object is represented by an associative array
|
51
56
|
# @param objectID (optional) an objectID you want to attribute to this object
|
52
57
|
# (if the attribute already exist the old object will be overridden)
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
58
|
+
# @param Request options object. Contains extra URL parameters or headers
|
59
|
+
def add_object!(obj, objectID = nil, request_options = {})
|
60
|
+
res = add_object(obj, objectID, request_options)
|
61
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
62
|
+
res
|
57
63
|
end
|
58
64
|
|
59
65
|
# Add several objects in this index
|
60
66
|
#
|
61
67
|
# @param objs the array of objects to add inside the index.
|
62
68
|
# Each object is represented by an associative array
|
63
|
-
|
64
|
-
|
69
|
+
# @param request_options contains extra parameters to send with your query
|
70
|
+
def add_objects(objs, request_options = {})
|
71
|
+
batch(build_batch('addObject', objs, false), request_options)
|
65
72
|
end
|
66
73
|
|
67
74
|
# Add several objects in this index and wait end of indexing
|
68
75
|
#
|
69
76
|
# @param objs the array of objects to add inside the index.
|
70
77
|
# Each object is represented by an associative array
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
78
|
+
# @param request_options contains extra parameters to send with your query
|
79
|
+
def add_objects!(objs, request_options = {})
|
80
|
+
res = add_objects(objs, request_options)
|
81
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
82
|
+
res
|
75
83
|
end
|
76
84
|
|
77
85
|
# Search inside the index
|
@@ -135,10 +143,11 @@ module Algolia
|
|
135
143
|
# all hits containing a duplicate value for the attributeForDistinct attribute are removed from results.
|
136
144
|
# For example, if the chosen attribute is show_name and several hits have the same value for show_name, then only the best
|
137
145
|
# one is kept and others are removed.
|
138
|
-
|
146
|
+
# @param request_options contains extra parameters to send with your query
|
147
|
+
def search(query, params = {}, request_options = {})
|
139
148
|
encoded_params = Hash[params.map { |k,v| [k.to_s, v.is_a?(Array) ? v.to_json : v] }]
|
140
149
|
encoded_params[:query] = query
|
141
|
-
client.post(Protocol.search_post_uri(name), { :params => Protocol.to_query(encoded_params) }.to_json, :search)
|
150
|
+
client.post(Protocol.search_post_uri(name), { :params => Protocol.to_query(encoded_params) }.to_json, :search, request_options)
|
142
151
|
end
|
143
152
|
|
144
153
|
class IndexBrowser
|
@@ -149,9 +158,9 @@ module Algolia
|
|
149
158
|
@cursor = params[:cursor] || params['cursor'] || nil
|
150
159
|
end
|
151
160
|
|
152
|
-
def browse(&block)
|
161
|
+
def browse(request_options = {}, &block)
|
153
162
|
loop do
|
154
|
-
answer = @client.get(Protocol.browse_uri(@name, @params.merge({ :cursor => @cursor })), :read)
|
163
|
+
answer = @client.get(Protocol.browse_uri(@name, @params.merge({ :cursor => @cursor })), :read, request_options)
|
155
164
|
answer['hits'].each do |hit|
|
156
165
|
if block.arity == 2
|
157
166
|
yield hit, @cursor
|
@@ -168,14 +177,16 @@ module Algolia
|
|
168
177
|
#
|
169
178
|
# Browse all index content
|
170
179
|
#
|
171
|
-
# @param
|
172
|
-
#
|
180
|
+
# @param queryParameters The hash of query parameters to use to browse
|
181
|
+
# To browse from a specific cursor, just add a ":cursor" parameters
|
182
|
+
# @param queryParameters An optional second parameters hash here for backward-compatibility (which will be merged with the first)
|
183
|
+
# @param request_options contains extra parameters to send with your query
|
173
184
|
#
|
174
185
|
# @DEPRECATED:
|
175
|
-
# @param
|
186
|
+
# @param page Pagination parameter used to select the page to retrieve.
|
176
187
|
# @param hitsPerPage: Pagination parameter used to select the number of hits per page. Defaults to 1000.
|
177
188
|
#
|
178
|
-
def browse(pageOrQueryParameters = nil, hitsPerPage = nil, &block)
|
189
|
+
def browse(pageOrQueryParameters = nil, hitsPerPage = nil, request_options = {}, &block)
|
179
190
|
params = {}
|
180
191
|
if pageOrQueryParameters.is_a?(Hash)
|
181
192
|
params.merge!(pageOrQueryParameters)
|
@@ -189,19 +200,20 @@ module Algolia
|
|
189
200
|
end
|
190
201
|
|
191
202
|
if block_given?
|
192
|
-
IndexBrowser.new(client, name, params).browse(&block)
|
203
|
+
IndexBrowser.new(client, name, params).browse(request_options, &block)
|
193
204
|
else
|
194
205
|
params[:page] ||= 0
|
195
206
|
params[:hitsPerPage] ||= 1000
|
196
|
-
client.get(Protocol.browse_uri(name, params), :read)
|
207
|
+
client.get(Protocol.browse_uri(name, params), :read, request_options)
|
197
208
|
end
|
198
209
|
end
|
199
210
|
|
200
211
|
#
|
201
212
|
# Browse a single page from a specific cursor
|
202
213
|
#
|
203
|
-
|
204
|
-
|
214
|
+
# @param request_options contains extra parameters to send with your query
|
215
|
+
def browse_from(cursor, hitsPerPage = 1000, request_options = {})
|
216
|
+
client.get(Protocol.browse_uri(name, { :cursor => cursor, :hitsPerPage => hitsPerPage }), :read, request_options)
|
205
217
|
end
|
206
218
|
|
207
219
|
#
|
@@ -209,13 +221,14 @@ module Algolia
|
|
209
221
|
#
|
210
222
|
# @param objectID the unique identifier of the object to retrieve
|
211
223
|
# @param attributesToRetrieve (optional) if set, contains the list of attributes to retrieve as an array of strings of a string separated by ","
|
224
|
+
# @param request_options contains extra parameters to send with your query
|
212
225
|
#
|
213
|
-
def get_object(objectID, attributesToRetrieve = nil)
|
226
|
+
def get_object(objectID, attributesToRetrieve = nil, request_options = {})
|
214
227
|
attributesToRetrieve = attributesToRetrieve.join(',') if attributesToRetrieve.is_a?(Array)
|
215
228
|
if attributesToRetrieve.nil?
|
216
|
-
client.get(Protocol.object_uri(name, objectID, nil), :read)
|
229
|
+
client.get(Protocol.object_uri(name, objectID, nil), :read, request_options)
|
217
230
|
else
|
218
|
-
client.get(Protocol.object_uri(name, objectID, {:attributes => attributesToRetrieve}), :read)
|
231
|
+
client.get(Protocol.object_uri(name, objectID, {:attributes => attributesToRetrieve}), :read, request_options)
|
219
232
|
end
|
220
233
|
end
|
221
234
|
|
@@ -224,24 +237,26 @@ module Algolia
|
|
224
237
|
#
|
225
238
|
# @param objectIDs the array of unique identifier of the objects to retrieve
|
226
239
|
# @param attributesToRetrieve (optional) if set, contains the list of attributes to retrieve as an array of strings of a string separated by ","
|
240
|
+
# @param request_options contains extra parameters to send with your query
|
227
241
|
#
|
228
|
-
def get_objects(objectIDs, attributesToRetrieve = nil)
|
242
|
+
def get_objects(objectIDs, attributesToRetrieve = nil, request_options = {})
|
229
243
|
attributesToRetrieve = attributesToRetrieve.join(',') if attributesToRetrieve.is_a?(Array)
|
230
244
|
requests = objectIDs.map do |objectID|
|
231
245
|
req = {:indexName => name, :objectID => objectID.to_s}
|
232
246
|
req[:attributesToRetrieve] = attributesToRetrieve unless attributesToRetrieve.nil?
|
233
247
|
req
|
234
248
|
end
|
235
|
-
client.post(Protocol.objects_uri, { :requests => requests }.to_json, :read)['results']
|
249
|
+
client.post(Protocol.objects_uri, { :requests => requests }.to_json, :read, request_options)['results']
|
236
250
|
end
|
237
251
|
|
238
252
|
# Check the status of a task on the server.
|
239
253
|
# All server task are asynchronous and you can check the status of a task with this method.
|
240
254
|
#
|
241
255
|
# @param taskID the id of the task returned by server
|
256
|
+
# @param request_options contains extra parameters to send with your query
|
242
257
|
#
|
243
|
-
def get_task_status(taskID)
|
244
|
-
client.get(Protocol.task_uri(name, taskID), :read)[
|
258
|
+
def get_task_status(taskID, request_options = {})
|
259
|
+
client.get(Protocol.task_uri(name, taskID), :read, request_options)['status']
|
245
260
|
end
|
246
261
|
|
247
262
|
# Wait the publication of a task on the server.
|
@@ -249,11 +264,12 @@ module Algolia
|
|
249
264
|
#
|
250
265
|
# @param taskID the id of the task returned by server
|
251
266
|
# @param timeBeforeRetry the time in milliseconds before retry (default = 100ms)
|
267
|
+
# @param request_options contains extra parameters to send with your query
|
252
268
|
#
|
253
|
-
def wait_task(taskID, timeBeforeRetry =
|
269
|
+
def wait_task(taskID, timeBeforeRetry = WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options = {})
|
254
270
|
loop do
|
255
|
-
status = get_task_status(taskID)
|
256
|
-
if status ==
|
271
|
+
status = get_task_status(taskID, request_options)
|
272
|
+
if status == 'published'
|
257
273
|
return
|
258
274
|
end
|
259
275
|
sleep(timeBeforeRetry.to_f / 1000)
|
@@ -264,38 +280,42 @@ module Algolia
|
|
264
280
|
#
|
265
281
|
# @param obj the object to save
|
266
282
|
# @param objectID the associated objectID, if nil 'obj' must contain an 'objectID' key
|
283
|
+
# @param request_options contains extra parameters to send with your query
|
267
284
|
#
|
268
|
-
def save_object(obj, objectID = nil)
|
269
|
-
client.put(Protocol.object_uri(name, get_objectID(obj, objectID)), obj.to_json)
|
285
|
+
def save_object(obj, objectID = nil, request_options = {})
|
286
|
+
client.put(Protocol.object_uri(name, get_objectID(obj, objectID)), obj.to_json, :write, request_options)
|
270
287
|
end
|
271
288
|
|
272
289
|
# Override the content of object and wait end of indexing
|
273
290
|
#
|
274
291
|
# @param obj the object to save
|
275
292
|
# @param objectID the associated objectID, if nil 'obj' must contain an 'objectID' key
|
293
|
+
# @param request_options contains extra parameters to send with your query
|
276
294
|
#
|
277
|
-
def save_object!(obj, objectID = nil)
|
278
|
-
res = save_object(obj, objectID)
|
279
|
-
wait_task(res[
|
280
|
-
|
295
|
+
def save_object!(obj, objectID = nil, request_options = {})
|
296
|
+
res = save_object(obj, objectID, request_options)
|
297
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
298
|
+
res
|
281
299
|
end
|
282
300
|
|
283
301
|
# Override the content of several objects
|
284
302
|
#
|
285
303
|
# @param objs the array of objects to save, each object must contain an 'objectID' key
|
304
|
+
# @param request_options contains extra parameters to send with your query
|
286
305
|
#
|
287
|
-
def save_objects(objs)
|
288
|
-
batch
|
306
|
+
def save_objects(objs, request_options = {})
|
307
|
+
batch(build_batch('updateObject', objs, true), request_options)
|
289
308
|
end
|
290
309
|
|
291
310
|
# Override the content of several objects and wait end of indexing
|
292
311
|
#
|
293
312
|
# @param objs the array of objects to save, each object must contain an objectID attribute
|
313
|
+
# @param request_options contains extra parameters to send with your query
|
294
314
|
#
|
295
|
-
def save_objects!(objs)
|
296
|
-
res = save_objects(objs)
|
297
|
-
wait_task(res[
|
298
|
-
|
315
|
+
def save_objects!(objs, request_options = {})
|
316
|
+
res = save_objects(objs, request_options)
|
317
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
318
|
+
res
|
299
319
|
end
|
300
320
|
|
301
321
|
#
|
@@ -304,9 +324,10 @@ module Algolia
|
|
304
324
|
# @param obj the object attributes to override
|
305
325
|
# @param objectID the associated objectID, if nil 'obj' must contain an 'objectID' key
|
306
326
|
# @param create_if_not_exits a boolean, if true creates the object if this one doesn't exist
|
327
|
+
# @param request_options contains extra parameters to send with your query
|
307
328
|
#
|
308
|
-
def partial_update_object(obj, objectID = nil, create_if_not_exits = true)
|
309
|
-
client.post(Protocol.partial_object_uri(name, get_objectID(obj, objectID), create_if_not_exits), obj.to_json)
|
329
|
+
def partial_update_object(obj, objectID = nil, create_if_not_exits = true, request_options = {})
|
330
|
+
client.post(Protocol.partial_object_uri(name, get_objectID(obj, objectID), create_if_not_exits), obj.to_json, :write, request_options)
|
310
331
|
end
|
311
332
|
|
312
333
|
#
|
@@ -314,12 +335,13 @@ module Algolia
|
|
314
335
|
#
|
315
336
|
# @param objs an array of objects to update (each object must contains a objectID attribute)
|
316
337
|
# @param create_if_not_exits a boolean, if true create the objects if they don't exist
|
338
|
+
# @param request_options contains extra parameters to send with your query
|
317
339
|
#
|
318
|
-
def partial_update_objects(objs, create_if_not_exits = true)
|
340
|
+
def partial_update_objects(objs, create_if_not_exits = true, request_options = {})
|
319
341
|
if create_if_not_exits
|
320
|
-
batch
|
342
|
+
batch(build_batch('partialUpdateObject', objs, true), request_options)
|
321
343
|
else
|
322
|
-
batch
|
344
|
+
batch(build_batch('partialUpdateObjectNoCreate', objs, true), request_options)
|
323
345
|
end
|
324
346
|
end
|
325
347
|
|
@@ -328,11 +350,12 @@ module Algolia
|
|
328
350
|
#
|
329
351
|
# @param objs an array of objects to update (each object must contains a objectID attribute)
|
330
352
|
# @param create_if_not_exits a boolean, if true create the objects if they don't exist
|
353
|
+
# @param request_options contains extra parameters to send with your query
|
331
354
|
#
|
332
|
-
def partial_update_objects!(objs, create_if_not_exits = true)
|
333
|
-
res = partial_update_objects(objs, create_if_not_exits)
|
334
|
-
wait_task(res[
|
335
|
-
|
355
|
+
def partial_update_objects!(objs, create_if_not_exits = true, request_options = {})
|
356
|
+
res = partial_update_objects(objs, create_if_not_exits, request_options)
|
357
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
358
|
+
res
|
336
359
|
end
|
337
360
|
|
338
361
|
#
|
@@ -341,53 +364,58 @@ module Algolia
|
|
341
364
|
# @param obj the attributes to override
|
342
365
|
# @param objectID the associated objectID, if nil 'obj' must contain an 'objectID' key
|
343
366
|
# @param create_if_not_exits a boolean, if true creates the object if this one doesn't exist
|
367
|
+
# @param request_options contains extra parameters to send with your query
|
344
368
|
#
|
345
|
-
def partial_update_object!(obj, objectID = nil, create_if_not_exits = true)
|
346
|
-
res = partial_update_object(obj, objectID, create_if_not_exits)
|
347
|
-
wait_task(res[
|
348
|
-
|
369
|
+
def partial_update_object!(obj, objectID = nil, create_if_not_exits = true, request_options = {})
|
370
|
+
res = partial_update_object(obj, objectID, create_if_not_exits, request_options)
|
371
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
372
|
+
res
|
349
373
|
end
|
350
374
|
|
351
375
|
#
|
352
376
|
# Delete an object from the index
|
353
377
|
#
|
354
378
|
# @param objectID the unique identifier of object to delete
|
379
|
+
# @param request_options contains extra parameters to send with your query
|
355
380
|
#
|
356
|
-
def delete_object(objectID)
|
381
|
+
def delete_object(objectID, request_options = {})
|
357
382
|
raise ArgumentError.new('objectID must not be blank') if objectID.nil? || objectID == ''
|
358
|
-
client.delete(Protocol.object_uri(name, objectID))
|
383
|
+
client.delete(Protocol.object_uri(name, objectID), :write, request_options)
|
359
384
|
end
|
360
385
|
|
361
386
|
#
|
362
387
|
# Delete an object from the index and wait end of indexing
|
363
388
|
#
|
364
389
|
# @param objectID the unique identifier of object to delete
|
390
|
+
# @param request_options contains extra parameters to send with your query
|
365
391
|
#
|
366
|
-
def delete_object!(objectID)
|
367
|
-
res = delete_object(objectID)
|
368
|
-
wait_task(res[
|
369
|
-
|
392
|
+
def delete_object!(objectID, request_options = {})
|
393
|
+
res = delete_object(objectID, request_options)
|
394
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
395
|
+
res
|
370
396
|
end
|
371
397
|
|
372
398
|
#
|
373
399
|
# Delete several objects
|
374
400
|
#
|
375
401
|
# @param objs an array of objectIDs
|
402
|
+
# @param request_options contains extra parameters to send with your query
|
376
403
|
#
|
377
|
-
def delete_objects(objs)
|
404
|
+
def delete_objects(objs, request_options = {})
|
378
405
|
check_array objs
|
379
|
-
batch
|
406
|
+
batch(build_batch('deleteObject', objs.map { |objectID| { :objectID => objectID } }, false), request_options)
|
380
407
|
end
|
381
408
|
|
382
409
|
#
|
383
410
|
# Delete several objects and wait end of indexing
|
384
411
|
#
|
385
412
|
# @param objs an array of objectIDs
|
413
|
+
# @param request_options contains extra parameters to send with your query
|
386
414
|
#
|
387
|
-
def delete_objects!(objs)
|
388
|
-
res = delete_objects(objs)
|
389
|
-
wait_task(res[
|
390
|
-
|
415
|
+
def delete_objects!(objs, request_options = {})
|
416
|
+
res = delete_objects(objs, request_options)
|
417
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
418
|
+
res
|
391
419
|
end
|
392
420
|
|
393
421
|
#
|
@@ -396,8 +424,9 @@ module Algolia
|
|
396
424
|
# asynchronously
|
397
425
|
# @param query the query string
|
398
426
|
# @param params the optional query parameters
|
427
|
+
# @param request_options contains extra parameters to send with your query
|
399
428
|
#
|
400
|
-
def delete_by_query(query, params = nil)
|
429
|
+
def delete_by_query(query, params = nil, request_options = {})
|
401
430
|
raise ArgumentError.new('query cannot be nil, use the `clear` method to wipe the entire index') if query.nil? && params.nil?
|
402
431
|
params = sanitized_delete_by_query_params(params)
|
403
432
|
|
@@ -409,7 +438,7 @@ module Algolia
|
|
409
438
|
ids = []
|
410
439
|
|
411
440
|
while params[:cursor] != nil
|
412
|
-
result = browse(params)
|
441
|
+
result = browse(params, nil, request_options)
|
413
442
|
|
414
443
|
params[:cursor] = result['cursor']
|
415
444
|
|
@@ -419,7 +448,7 @@ module Algolia
|
|
419
448
|
ids += hits.map { |h| h['objectID'] }
|
420
449
|
end
|
421
450
|
|
422
|
-
delete_objects(ids)
|
451
|
+
delete_objects(ids, request_options)
|
423
452
|
end
|
424
453
|
|
425
454
|
#
|
@@ -427,10 +456,11 @@ module Algolia
|
|
427
456
|
#
|
428
457
|
# @param query the query string
|
429
458
|
# @param params the optional query parameters
|
459
|
+
# @param request_options contains extra parameters to send with your query
|
430
460
|
#
|
431
|
-
def delete_by_query!(query, params = nil)
|
432
|
-
res = delete_by_query(query, params)
|
433
|
-
wait_task(res['taskID']) if res
|
461
|
+
def delete_by_query!(query, params = nil, request_options = {})
|
462
|
+
res = delete_by_query(query, params, request_options)
|
463
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options) if res
|
434
464
|
res
|
435
465
|
end
|
436
466
|
|
@@ -439,72 +469,75 @@ module Algolia
|
|
439
469
|
# This method deletes every record matching the filters provided
|
440
470
|
#
|
441
471
|
# @param params query parameters
|
472
|
+
# @param request_options contains extra parameters to send with your query
|
442
473
|
#
|
443
|
-
def delete_by(params)
|
474
|
+
def delete_by(params, request_options = {})
|
444
475
|
raise ArgumentError.new('params cannot be nil, use the `clear` method to wipe the entire index') if params.nil?
|
445
476
|
params = sanitized_delete_by_query_params(params)
|
446
|
-
client.post(Protocol.delete_by_uri(name), params.to_json)
|
477
|
+
client.post(Protocol.delete_by_uri(name), params.to_json, :write, request_options)
|
447
478
|
end
|
448
479
|
|
449
480
|
#
|
450
481
|
# Delete all objects matching a query (doesn't work with actual text queries)
|
451
482
|
# This method deletes every record matching the filters provided and waits for the end of indexing
|
452
483
|
# @param params query parameters
|
484
|
+
# @param request_options contains extra parameters to send with your query
|
453
485
|
#
|
454
|
-
def delete_by!(params)
|
455
|
-
res = delete_by(params)
|
456
|
-
wait_task(res['taskID']) if res
|
486
|
+
def delete_by!(params, request_options = {})
|
487
|
+
res = delete_by(params, request_options)
|
488
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options) if res
|
457
489
|
res
|
458
490
|
end
|
459
491
|
|
460
492
|
#
|
461
493
|
# Delete the index content
|
462
494
|
#
|
495
|
+
# @param request_options contains extra parameters to send with your query
|
463
496
|
#
|
464
|
-
def clear
|
465
|
-
client.post(Protocol.clear_uri(name))
|
497
|
+
def clear(request_options = {})
|
498
|
+
client.post(Protocol.clear_uri(name), {}, :write, request_options)
|
466
499
|
end
|
467
500
|
alias_method :clear_index, :clear
|
468
501
|
|
469
502
|
#
|
470
503
|
# Delete the index content and wait end of indexing
|
471
504
|
#
|
472
|
-
def clear!
|
473
|
-
res = clear
|
474
|
-
wait_task(res[
|
475
|
-
|
505
|
+
def clear!(request_options = {})
|
506
|
+
res = clear(request_options)
|
507
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
508
|
+
res
|
476
509
|
end
|
477
510
|
alias_method :clear_index!, :clear!
|
478
511
|
|
479
512
|
#
|
480
513
|
# Set settings for this index
|
481
514
|
#
|
482
|
-
def set_settings(new_settings, options = {})
|
483
|
-
client.put(Protocol.settings_uri(name, options), new_settings.to_json)
|
515
|
+
def set_settings(new_settings, options = {}, request_options = {})
|
516
|
+
client.put(Protocol.settings_uri(name, options), new_settings.to_json, :write, request_options)
|
484
517
|
end
|
485
518
|
|
486
519
|
# Set settings for this index and wait end of indexing
|
487
520
|
#
|
488
|
-
def set_settings!(new_settings, options = {})
|
489
|
-
res = set_settings(new_settings, options)
|
490
|
-
wait_task(res[
|
491
|
-
|
521
|
+
def set_settings!(new_settings, options = {}, request_options = {})
|
522
|
+
res = set_settings(new_settings, options, request_options)
|
523
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
524
|
+
res
|
492
525
|
end
|
493
526
|
|
494
527
|
# Get settings of this index
|
495
|
-
def get_settings(options = {})
|
528
|
+
def get_settings(options = {}, request_options = {})
|
496
529
|
options['getVersion'] = 2 if !options[:getVersion] && !options['getVersion']
|
497
|
-
client.get(
|
530
|
+
client.get(Protocol.settings_uri(name, options).to_s, :read, request_options)
|
498
531
|
end
|
499
532
|
|
500
533
|
# List all existing user keys with their associated ACLs
|
501
|
-
def list_api_keys
|
502
|
-
client.get(Protocol.index_keys_uri(name), :read)
|
534
|
+
def list_api_keys(request_options = {})
|
535
|
+
client.get(Protocol.index_keys_uri(name), :read, request_options)
|
503
536
|
end
|
504
537
|
|
505
538
|
# Get ACL of a user key
|
506
|
-
def get_api_key(key)
|
507
|
-
client.get(Protocol.index_key_uri(name, key), :read)
|
539
|
+
def get_api_key(key, request_options = {})
|
540
|
+
client.get(Protocol.index_key_uri(name, key), :read, request_options)
|
508
541
|
end
|
509
542
|
|
510
543
|
#
|
@@ -531,8 +564,9 @@ module Algolia
|
|
531
564
|
# @param validity the number of seconds after which the key will be automatically removed (0 means no time limit for this key)
|
532
565
|
# @param maxQueriesPerIPPerHour the maximum number of API calls allowed from an IP address per hour (0 means unlimited)
|
533
566
|
# @param maxHitsPerQuery the maximum number of hits this API key can retrieve in one call (0 means unlimited)
|
567
|
+
# @param request_options contains extra parameters to send with your query
|
534
568
|
#
|
535
|
-
def add_api_key(obj, validity = 0, maxQueriesPerIPPerHour = 0, maxHitsPerQuery = 0)
|
569
|
+
def add_api_key(obj, validity = 0, maxQueriesPerIPPerHour = 0, maxHitsPerQuery = 0, request_options = {})
|
536
570
|
if obj.instance_of? Array
|
537
571
|
params = {
|
538
572
|
:acl => obj
|
@@ -549,7 +583,7 @@ module Algolia
|
|
549
583
|
if maxHitsPerQuery != 0
|
550
584
|
params["maxHitsPerQuery"] = maxHitsPerQuery.to_i
|
551
585
|
end
|
552
|
-
client.post(Protocol.index_keys_uri(name), params.to_json)
|
586
|
+
client.post(Protocol.index_keys_uri(name), params.to_json, :write, request_options)
|
553
587
|
end
|
554
588
|
|
555
589
|
#
|
@@ -576,8 +610,9 @@ module Algolia
|
|
576
610
|
# @param validity the number of seconds after which the key will be automatically removed (0 means no time limit for this key)
|
577
611
|
# @param maxQueriesPerIPPerHour the maximum number of API calls allowed from an IP address per hour (0 means unlimited)
|
578
612
|
# @param maxHitsPerQuery the maximum number of hits this API key can retrieve in one call (0 means unlimited)
|
613
|
+
# @param request_options contains extra parameters to send with your query
|
579
614
|
#
|
580
|
-
def update_api_key(key, obj, validity = 0, maxQueriesPerIPPerHour = 0, maxHitsPerQuery = 0)
|
615
|
+
def update_api_key(key, obj, validity = 0, maxQueriesPerIPPerHour = 0, maxHitsPerQuery = 0, request_options = {})
|
581
616
|
if obj.instance_of? Array
|
582
617
|
params = {
|
583
618
|
:acl => obj
|
@@ -594,24 +629,24 @@ module Algolia
|
|
594
629
|
if maxHitsPerQuery != 0
|
595
630
|
params["maxHitsPerQuery"] = maxHitsPerQuery.to_i
|
596
631
|
end
|
597
|
-
client.put(Protocol.index_key_uri(name, key), params.to_json)
|
632
|
+
client.put(Protocol.index_key_uri(name, key), params.to_json, :write, request_options)
|
598
633
|
end
|
599
634
|
|
600
635
|
|
601
636
|
# Delete an existing user key
|
602
|
-
def delete_api_key(key)
|
603
|
-
client.delete(Protocol.index_key_uri(name, key))
|
637
|
+
def delete_api_key(key, request_options = {})
|
638
|
+
client.delete(Protocol.index_key_uri(name, key), :write, request_options)
|
604
639
|
end
|
605
640
|
|
606
641
|
# Send a batch request
|
607
|
-
def batch(request)
|
608
|
-
client.post(Protocol.batch_uri(name), request.to_json, :batch)
|
642
|
+
def batch(request, request_options = {})
|
643
|
+
client.post(Protocol.batch_uri(name), request.to_json, :batch, request_options)
|
609
644
|
end
|
610
645
|
|
611
646
|
# Send a batch request and wait the end of the indexing
|
612
|
-
def batch!(request)
|
613
|
-
res = batch(request)
|
614
|
-
wait_task(res['taskID'])
|
647
|
+
def batch!(request, request_options = {})
|
648
|
+
res = batch(request, request_options)
|
649
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
615
650
|
res
|
616
651
|
end
|
617
652
|
|
@@ -623,10 +658,11 @@ module Algolia
|
|
623
658
|
# @param query An optional query to take extra search parameters into account.
|
624
659
|
# These parameters apply to index objects like in a regular search query.
|
625
660
|
# Only facet values contained in the matched objects will be returned.
|
626
|
-
|
661
|
+
# @param request_options contains extra parameters to send with your query
|
662
|
+
def search_for_facet_values(facet, text, query = {}, request_options = {})
|
627
663
|
params = query.clone
|
628
664
|
params['facetQuery'] = text
|
629
|
-
client.post(Protocol.search_facet_uri(name, facet), params.to_json)
|
665
|
+
client.post(Protocol.search_facet_uri(name, facet), params.to_json, :read, request_options)
|
630
666
|
end
|
631
667
|
|
632
668
|
# deprecated
|
@@ -639,7 +675,8 @@ module Algolia
|
|
639
675
|
# @param params a hash representing the regular query parameters
|
640
676
|
# @param refinements a hash ("string" -> ["array", "of", "refined", "values"]) representing the current refinements
|
641
677
|
# ex: { "my_facet1" => ["my_value1", ["my_value2"], "my_disjunctive_facet1" => ["my_value1", "my_value2"] }
|
642
|
-
|
678
|
+
# @param request_options contains extra parameters to send with your query
|
679
|
+
def search_disjunctive_faceting(query, disjunctive_facets, params = {}, refinements = {}, request_options = {})
|
643
680
|
raise ArgumentError.new('Argument "disjunctive_facets" must be a String or an Array') unless disjunctive_facets.is_a?(String) || disjunctive_facets.is_a?(Array)
|
644
681
|
raise ArgumentError.new('Argument "refinements" must be a Hash of Arrays') if !refinements.is_a?(Hash) || !refinements.select { |k, v| !v.is_a?(Array) }.empty?
|
645
682
|
|
@@ -693,7 +730,7 @@ module Algolia
|
|
693
730
|
:analytics => false
|
694
731
|
})
|
695
732
|
end
|
696
|
-
answers = client.multiple_queries(queries)
|
733
|
+
answers = client.multiple_queries(queries, { :request_options => request_options })
|
697
734
|
|
698
735
|
# aggregate answers
|
699
736
|
## first answer stores the hits + regular facets
|
@@ -720,15 +757,18 @@ module Algolia
|
|
720
757
|
#
|
721
758
|
# Alias of Algolia.list_indexes
|
722
759
|
#
|
723
|
-
|
724
|
-
|
760
|
+
# @param request_options contains extra parameters to send with your query
|
761
|
+
#
|
762
|
+
def Index.all(request_options = {})
|
763
|
+
Algolia.list_indexes(request_options)
|
725
764
|
end
|
726
765
|
|
727
766
|
# Search synonyms
|
728
767
|
#
|
729
768
|
# @param query the query
|
730
769
|
# @param params an optional hash of :type, :page, :hitsPerPage
|
731
|
-
|
770
|
+
# @param request_options contains extra parameters to send with your query
|
771
|
+
def search_synonyms(query, params = {}, request_options = {})
|
732
772
|
type = params[:type] || params['type']
|
733
773
|
type = type.join(',') if type.is_a?(Array)
|
734
774
|
page = params[:page] || params['page'] || 0
|
@@ -739,32 +779,35 @@ module Algolia
|
|
739
779
|
:page => page,
|
740
780
|
:hitsPerPage => hits_per_page
|
741
781
|
}
|
742
|
-
client.post(Protocol.search_synonyms_uri(name), params.to_json, :read)
|
782
|
+
client.post(Protocol.search_synonyms_uri(name), params.to_json, :read, request_options)
|
743
783
|
end
|
744
784
|
|
745
785
|
# Get a synonym
|
746
786
|
#
|
747
787
|
# @param objectID the synonym objectID
|
748
|
-
|
749
|
-
|
788
|
+
# @param request_options contains extra parameters to send with your query
|
789
|
+
def get_synonym(objectID, request_options = {})
|
790
|
+
client.get(Protocol.synonym_uri(name, objectID), :read, request_options)
|
750
791
|
end
|
751
792
|
|
752
793
|
# Delete a synonym
|
753
794
|
#
|
754
795
|
# @param objectID the synonym objectID
|
755
796
|
# @param forward_to_replicas should we forward the delete to replica indices
|
756
|
-
|
757
|
-
|
797
|
+
# @param request_options contains extra parameters to send with your query
|
798
|
+
def delete_synonym(objectID, forward_to_replicas = false, request_options = {})
|
799
|
+
client.delete("#{Protocol.synonym_uri(name, objectID)}?forwardToReplicas=#{forward_to_replicas}", :write, request_options)
|
758
800
|
end
|
759
801
|
|
760
802
|
# Delete a synonym and wait the end of indexing
|
761
803
|
#
|
762
804
|
# @param objectID the synonym objectID
|
763
805
|
# @param forward_to_replicas should we forward the delete to replica indices
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
806
|
+
# @param request_options contains extra parameters to send with your query
|
807
|
+
def delete_synonym!(objectID, forward_to_replicas = false, request_options = {})
|
808
|
+
res = delete_synonym(objectID, forward_to_replicas, request_options)
|
809
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
810
|
+
res
|
768
811
|
end
|
769
812
|
|
770
813
|
# Save a synonym
|
@@ -772,8 +815,9 @@ module Algolia
|
|
772
815
|
# @param objectID the synonym objectID
|
773
816
|
# @param synonym the synonym
|
774
817
|
# @param forward_to_replicas should we forward the delete to replica indices
|
775
|
-
|
776
|
-
|
818
|
+
# @param request_options contains extra parameters to send with your query
|
819
|
+
def save_synonym(objectID, synonym, forward_to_replicas = false, request_options = {})
|
820
|
+
client.put("#{Protocol.synonym_uri(name, objectID)}?forwardToReplicas=#{forward_to_replicas}", synonym.to_json, :write, request_options)
|
777
821
|
end
|
778
822
|
|
779
823
|
# Save a synonym and wait the end of indexing
|
@@ -781,26 +825,29 @@ module Algolia
|
|
781
825
|
# @param objectID the synonym objectID
|
782
826
|
# @param synonym the synonym
|
783
827
|
# @param forward_to_replicas should we forward the delete to replica indices
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
828
|
+
# @param request_options contains extra parameters to send with your query
|
829
|
+
def save_synonym!(objectID, synonym, forward_to_replicas = false, request_options = {})
|
830
|
+
res = save_synonym(objectID, synonym, forward_to_replicas, request_options)
|
831
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
832
|
+
res
|
788
833
|
end
|
789
834
|
|
790
835
|
# Clear all synonyms
|
791
836
|
#
|
792
837
|
# @param forward_to_replicas should we forward the delete to replica indices
|
793
|
-
|
794
|
-
|
838
|
+
# @param request_options contains extra parameters to send with your query
|
839
|
+
def clear_synonyms(forward_to_replicas = false, request_options = {})
|
840
|
+
client.post("#{Protocol.clear_synonyms_uri(name)}?forwardToReplicas=#{forward_to_replicas}", {}, :write, request_options)
|
795
841
|
end
|
796
842
|
|
797
843
|
# Clear all synonyms and wait the end of indexing
|
798
844
|
#
|
799
845
|
# @param forward_to_replicas should we forward the delete to replica indices
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
846
|
+
# @param request_options contains extra parameters to send with your query
|
847
|
+
def clear_synonyms!(forward_to_replicas = false, request_options = {})
|
848
|
+
res = clear_synonyms(forward_to_replicas, request_options)
|
849
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
850
|
+
res
|
804
851
|
end
|
805
852
|
|
806
853
|
# Add/Update an array of synonyms
|
@@ -808,8 +855,9 @@ module Algolia
|
|
808
855
|
# @param synonyms the array of synonyms to add/update
|
809
856
|
# @param forward_to_replicas should we forward the delete to replica indices
|
810
857
|
# @param replace_existing_synonyms should we replace the existing synonyms before adding the new ones
|
811
|
-
|
812
|
-
|
858
|
+
# @param request_options contains extra parameters to send with your query
|
859
|
+
def batch_synonyms(synonyms, forward_to_replicas = false, replace_existing_synonyms = false, request_options = {})
|
860
|
+
client.post("#{Protocol.batch_synonyms_uri(name)}?forwardToReplicas=#{forward_to_replicas}&replaceExistingSynonyms=#{replace_existing_synonyms}", synonyms.to_json, :batch, request_options)
|
813
861
|
end
|
814
862
|
|
815
863
|
# Add/Update an array of synonyms and wait the end of indexing
|
@@ -817,17 +865,40 @@ module Algolia
|
|
817
865
|
# @param synonyms the array of synonyms to add/update
|
818
866
|
# @param forward_to_replicas should we forward the delete to replica indices
|
819
867
|
# @param replace_existing_synonyms should we replace the existing synonyms before adding the new ones
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
868
|
+
# @param request_options contains extra parameters to send with your query
|
869
|
+
def batch_synonyms!(synonyms, forward_to_replicas = false, replace_existing_synonyms = false, request_options = {})
|
870
|
+
res = batch_synonyms(synonyms, forward_to_replicas, replace_existing_synonyms, request_options)
|
871
|
+
wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
872
|
+
res
|
873
|
+
end
|
874
|
+
|
875
|
+
# Export the full list of synonyms
|
876
|
+
# Accepts an optional block to which it will pass each synonym
|
877
|
+
# Also returns an array with all the synonyms
|
878
|
+
#
|
879
|
+
# @param hits_per_page Amount of synonyms to retrieve on each internal request - Optional - Default: 100
|
880
|
+
# @param request_options contains extra parameters to send with your query - Optional
|
881
|
+
def export_synonyms(hits_per_page = 100, request_options = {}, &_block)
|
882
|
+
res = []
|
883
|
+
page = 0
|
884
|
+
loop do
|
885
|
+
curr = search_synonyms('', { :hits_per_page => hits_per_page, :page => page }, request_options)['hits']
|
886
|
+
curr.each do |synonym|
|
887
|
+
res << synonym
|
888
|
+
yield synonym if block_given?
|
889
|
+
end
|
890
|
+
break if curr.size < hits_per_page
|
891
|
+
page += 1
|
892
|
+
end
|
893
|
+
res
|
824
894
|
end
|
825
895
|
|
826
896
|
# Search rules
|
827
897
|
#
|
828
898
|
# @param query the query
|
829
899
|
# @param params an optional hash of :anchoring, :context, :page, :hitsPerPage
|
830
|
-
|
900
|
+
# @param request_options contains extra parameters to send with your query
|
901
|
+
def search_rules(query, params = {}, request_options = {})
|
831
902
|
anchoring = params[:anchoring]
|
832
903
|
context = params[:context]
|
833
904
|
page = params[:page] || params['page'] || 0
|
@@ -839,31 +910,34 @@ module Algolia
|
|
839
910
|
}
|
840
911
|
params[:anchoring] = anchoring unless anchoring.nil?
|
841
912
|
params[:context] = context unless context.nil?
|
842
|
-
client.post(Protocol.search_rules_uri(name), params.to_json, :read)
|
913
|
+
client.post(Protocol.search_rules_uri(name), params.to_json, :read, request_options)
|
843
914
|
end
|
844
915
|
|
845
916
|
# Get a rule
|
846
917
|
#
|
847
918
|
# @param objectID the rule objectID
|
848
|
-
|
849
|
-
|
919
|
+
# @param request_options contains extra parameters to send with your query
|
920
|
+
def get_rule(objectID, request_options = {})
|
921
|
+
client.get(Protocol.rule_uri(name, objectID), :read, request_options)
|
850
922
|
end
|
851
923
|
|
852
924
|
# Delete a rule
|
853
925
|
#
|
854
926
|
# @param objectID the rule objectID
|
855
927
|
# @param forward_to_replicas should we forward the delete to replica indices
|
856
|
-
|
857
|
-
|
928
|
+
# @param request_options contains extra parameters to send with your query
|
929
|
+
def delete_rule(objectID, forward_to_replicas = false, request_options = {})
|
930
|
+
client.delete("#{Protocol.rule_uri(name, objectID)}?forwardToReplicas=#{forward_to_replicas}", :write, request_options)
|
858
931
|
end
|
859
932
|
|
860
933
|
# Delete a rule and wait the end of indexing
|
861
934
|
#
|
862
935
|
# @param objectID the rule objectID
|
863
936
|
# @param forward_to_replicas should we forward the delete to replica indices
|
864
|
-
|
865
|
-
|
866
|
-
|
937
|
+
# @param request_options contains extra parameters to send with your query
|
938
|
+
def delete_rule!(objectID, forward_to_replicas = false, request_options = {})
|
939
|
+
res = delete_rule(objectID, forward_to_replicas, request_options)
|
940
|
+
wait_task(res["taskID"], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
867
941
|
return res
|
868
942
|
end
|
869
943
|
|
@@ -872,8 +946,9 @@ module Algolia
|
|
872
946
|
# @param objectID the rule objectID
|
873
947
|
# @param rule the rule
|
874
948
|
# @param forward_to_replicas should we forward the delete to replica indices
|
875
|
-
|
876
|
-
|
949
|
+
# @param request_options contains extra parameters to send with your query
|
950
|
+
def save_rule(objectID, rule, forward_to_replicas = false, request_options = {})
|
951
|
+
client.put("#{Protocol.rule_uri(name, objectID)}?forwardToReplicas=#{forward_to_replicas}", rule.to_json, :write, request_options)
|
877
952
|
end
|
878
953
|
|
879
954
|
# Save a rule and wait the end of indexing
|
@@ -881,25 +956,28 @@ module Algolia
|
|
881
956
|
# @param objectID the rule objectID
|
882
957
|
# @param rule the rule
|
883
958
|
# @param forward_to_replicas should we forward the delete to replica indices
|
884
|
-
|
885
|
-
|
886
|
-
|
959
|
+
# @param request_options contains extra parameters to send with your query
|
960
|
+
def save_rule!(objectID, rule, forward_to_replicas = false, request_options = {})
|
961
|
+
res = save_rule(objectID, rule, forward_to_replicas, request_options)
|
962
|
+
wait_task(res["taskID"], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
887
963
|
return res
|
888
964
|
end
|
889
965
|
|
890
966
|
# Clear all rules
|
891
967
|
#
|
892
968
|
# @param forward_to_replicas should we forward the delete to replica indices
|
893
|
-
|
894
|
-
|
969
|
+
# @param request_options contains extra parameters to send with your query
|
970
|
+
def clear_rules(forward_to_replicas = false, request_options = {})
|
971
|
+
client.post("#{Protocol.clear_rules_uri(name)}?forwardToReplicas=#{forward_to_replicas}", {}, :write, request_options)
|
895
972
|
end
|
896
973
|
|
897
974
|
# Clear all rules and wait the end of indexing
|
898
975
|
#
|
899
976
|
# @param forward_to_replicas should we forward the delete to replica indices
|
900
|
-
|
901
|
-
|
902
|
-
|
977
|
+
# @param request_options contains extra parameters to send with your query
|
978
|
+
def clear_rules!(forward_to_replicas = false, request_options = {})
|
979
|
+
res = clear_rules(forward_to_replicas, request_options)
|
980
|
+
wait_task(res["taskID"], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
903
981
|
return res
|
904
982
|
end
|
905
983
|
|
@@ -908,8 +986,9 @@ module Algolia
|
|
908
986
|
# @param rules the array of rules to add/update
|
909
987
|
# @param forward_to_replicas should we forward the delete to replica indices
|
910
988
|
# @param clear_existing_rules should we clear the existing rules before adding the new ones
|
911
|
-
|
912
|
-
|
989
|
+
# @param request_options contains extra parameters to send with your query
|
990
|
+
def batch_rules(rules, forward_to_replicas = false, clear_existing_rules = false, request_options = {})
|
991
|
+
client.post("#{Protocol.batch_rules_uri(name)}?forwardToReplicas=#{forward_to_replicas}&clearExistingRules=#{clear_existing_rules}", rules.to_json, :batch, request_options)
|
913
992
|
end
|
914
993
|
|
915
994
|
# Add/Update an array of rules and wait the end of indexing
|
@@ -917,12 +996,34 @@ module Algolia
|
|
917
996
|
# @param rules the array of rules to add/update
|
918
997
|
# @param forward_to_replicas should we forward the delete to replica indices
|
919
998
|
# @param clear_existing_rules should we clear the existing rules before adding the new ones
|
920
|
-
|
921
|
-
|
922
|
-
|
999
|
+
# @param request_options contains extra parameters to send with your query
|
1000
|
+
def batch_rules!(rules, forward_to_replicas = false, clear_existing_rules = false, request_options = {})
|
1001
|
+
res = batch_rules(rules, forward_to_replicas, clear_existing_rules, request_options)
|
1002
|
+
wait_task(res["taskID"], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
|
923
1003
|
return res
|
924
1004
|
end
|
925
1005
|
|
1006
|
+
# Export the full list of rules
|
1007
|
+
# Accepts an optional block to which it will pass each rule
|
1008
|
+
# Also returns an array with all the rules
|
1009
|
+
#
|
1010
|
+
# @param hits_per_page Amount of rules to retrieve on each internal request - Optional - Default: 100
|
1011
|
+
# @param request_options contains extra parameters to send with your query - Optional
|
1012
|
+
def export_rules(hits_per_page = 100, request_options = {}, &_block)
|
1013
|
+
res = []
|
1014
|
+
page = 0
|
1015
|
+
loop do
|
1016
|
+
curr = search_rules('', { :hits_per_page => hits_per_page, :page => page }, request_options)['hits']
|
1017
|
+
curr.each do |rule|
|
1018
|
+
res << rule
|
1019
|
+
yield rule if block_given?
|
1020
|
+
end
|
1021
|
+
break if curr.size < hits_per_page
|
1022
|
+
page += 1
|
1023
|
+
end
|
1024
|
+
res
|
1025
|
+
end
|
1026
|
+
|
926
1027
|
# Deprecated
|
927
1028
|
alias_method :get_user_key, :get_api_key
|
928
1029
|
alias_method :list_user_keys, :list_api_keys
|