algoliasearch 1.20.1 → 1.21.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,21 +11,25 @@ module Algolia
11
11
  self.client = client || Algolia.client
12
12
  end
13
13
 
14
+ #
14
15
  # Delete an index
15
16
  #
17
+ # @param request_options contains extra parameters to send with your query
18
+ #
16
19
  # return an hash of the form { "deletedAt" => "2013-01-18T15:33:13.556Z", "taskID" => "42" }
17
20
  #
18
- # @param request_options contains extra parameters to send with your query
19
21
  def delete(request_options = {})
20
22
  client.delete(Protocol.index_uri(name), :write, request_options)
21
23
  end
22
24
  alias_method :delete_index, :delete
23
25
 
26
+ #
24
27
  # Delete an index and wait until the deletion has been processed
25
28
  #
29
+ # @param request_options contains extra parameters to send with your query
30
+ #
26
31
  # return an hash of the form { "deletedAt" => "2013-01-18T15:33:13.556Z", "taskID" => "42" }
27
32
  #
28
- # @param request_options contains extra parameters to send with your query
29
33
  def delete!(request_options = {})
30
34
  res = delete(request_options)
31
35
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
@@ -33,55 +37,64 @@ module Algolia
33
37
  end
34
38
  alias_method :delete_index!, :delete!
35
39
 
40
+ #
36
41
  # Add an object in this index
37
42
  #
38
- # @param obj the object to add to the index.
43
+ # @param object the object to add to the index.
39
44
  # The object is represented by an associative array
40
45
  # @param objectID (optional) an objectID you want to attribute to this object
41
46
  # (if the attribute already exist the old object will be overridden)
42
47
  # @param request_options contains extra parameters to send with your query
43
- def add_object(obj, objectID = nil, request_options = {})
44
- check_object obj
48
+ #
49
+ def add_object(object, objectID = nil, request_options = {})
50
+ check_object(object)
45
51
  if objectID.nil? || objectID.to_s.empty?
46
- client.post(Protocol.index_uri(name), obj.to_json, :write, request_options)
52
+ client.post(Protocol.index_uri(name), object.to_json, :write, request_options)
47
53
  else
48
- client.put(Protocol.object_uri(name, objectID), obj.to_json, :write, request_options)
54
+ client.put(Protocol.object_uri(name, objectID), object.to_json, :write, request_options)
49
55
  end
50
56
  end
51
57
 
58
+ #
52
59
  # Add an object in this index and wait end of indexing
53
60
  #
54
- # @param obj the object to add to the index.
61
+ # @param object the object to add to the index.
55
62
  # The object is represented by an associative array
56
63
  # @param objectID (optional) an objectID you want to attribute to this object
57
64
  # (if the attribute already exist the old object will be overridden)
58
65
  # @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)
66
+ #
67
+ def add_object!(object, objectID = nil, request_options = {})
68
+ res = add_object(object, objectID, request_options)
61
69
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
62
70
  res
63
71
  end
64
72
 
73
+ #
65
74
  # Add several objects in this index
66
75
  #
67
- # @param objs the array of objects to add inside the index.
76
+ # @param objects the array of objects to add inside the index.
68
77
  # Each object is represented by an associative array
69
78
  # @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)
79
+ #
80
+ def add_objects(objects, request_options = {})
81
+ batch(build_batch('addObject', objects, false), request_options)
72
82
  end
73
83
 
84
+ #
74
85
  # Add several objects in this index and wait end of indexing
75
86
  #
76
- # @param objs the array of objects to add inside the index.
87
+ # @param objects the array of objects to add inside the index.
77
88
  # Each object is represented by an associative array
78
89
  # @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)
90
+ #
91
+ def add_objects!(objects, request_options = {})
92
+ res = add_objects(objects, request_options)
81
93
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
82
94
  res
83
95
  end
84
96
 
97
+ #
85
98
  # Search inside the index
86
99
  #
87
100
  # @param query the full text query
@@ -144,8 +157,9 @@ module Algolia
144
157
  # For example, if the chosen attribute is show_name and several hits have the same value for show_name, then only the best
145
158
  # one is kept and others are removed.
146
159
  # @param request_options contains extra parameters to send with your query
160
+ #
147
161
  def search(query, params = {}, request_options = {})
148
- encoded_params = Hash[params.map { |k,v| [k.to_s, v.is_a?(Array) ? v.to_json : v] }]
162
+ encoded_params = Hash[params.map { |k, v| [k.to_s, v.is_a?(Array) ? v.to_json : v] }]
149
163
  encoded_params[:query] = query
150
164
  client.post(Protocol.search_post_uri(name), { :params => Protocol.to_query(encoded_params) }.to_json, :search, request_options)
151
165
  end
@@ -184,19 +198,19 @@ module Algolia
184
198
  #
185
199
  # @DEPRECATED:
186
200
  # @param page Pagination parameter used to select the page to retrieve.
187
- # @param hitsPerPage: Pagination parameter used to select the number of hits per page. Defaults to 1000.
201
+ # @param hits_per_page Pagination parameter used to select the number of hits per page. Defaults to 1000.
188
202
  #
189
- def browse(pageOrQueryParameters = nil, hitsPerPage = nil, request_options = {}, &block)
203
+ def browse(page_or_query_parameters = nil, hits_per_page = nil, request_options = {}, &block)
190
204
  params = {}
191
- if pageOrQueryParameters.is_a?(Hash)
192
- params.merge!(pageOrQueryParameters)
205
+ if page_or_query_parameters.is_a?(Hash)
206
+ params.merge!(page_or_query_parameters)
193
207
  else
194
- params[:page] = pageOrQueryParameters unless pageOrQueryParameters.nil?
208
+ params[:page] = page_or_query_parameters unless page_or_query_parameters.nil?
195
209
  end
196
- if hitsPerPage.is_a?(Hash)
197
- params.merge!(hitsPerPage)
210
+ if hits_per_page.is_a?(Hash)
211
+ params.merge!(hits_per_page)
198
212
  else
199
- params[:hitsPerPage] = hitsPerPage unless hitsPerPage.nil?
213
+ params[:hitsPerPage] = hits_per_page unless hits_per_page.nil?
200
214
  end
201
215
 
202
216
  if block_given?
@@ -212,23 +226,24 @@ module Algolia
212
226
  # Browse a single page from a specific cursor
213
227
  #
214
228
  # @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)
229
+ #
230
+ def browse_from(cursor, hits_per_page = 1000, request_options = {})
231
+ client.get(Protocol.browse_uri(name, { :cursor => cursor, :hitsPerPage => hits_per_page }), :read, request_options)
217
232
  end
218
233
 
219
234
  #
220
235
  # Get an object from this index
221
236
  #
222
237
  # @param objectID the unique identifier of the object to retrieve
223
- # @param attributesToRetrieve (optional) if set, contains the list of attributes to retrieve as an array of strings of a string separated by ","
238
+ # @param attributes_to_retrieve (optional) if set, contains the list of attributes to retrieve as an array of strings of a string separated by ","
224
239
  # @param request_options contains extra parameters to send with your query
225
240
  #
226
- def get_object(objectID, attributesToRetrieve = nil, request_options = {})
227
- attributesToRetrieve = attributesToRetrieve.join(',') if attributesToRetrieve.is_a?(Array)
228
- if attributesToRetrieve.nil?
241
+ def get_object(objectID, attributes_to_retrieve = nil, request_options = {})
242
+ attributes_to_retrieve = attributes_to_retrieve.join(',') if attributes_to_retrieve.is_a?(Array)
243
+ if attributes_to_retrieve.nil?
229
244
  client.get(Protocol.object_uri(name, objectID, nil), :read, request_options)
230
245
  else
231
- client.get(Protocol.object_uri(name, objectID, {:attributes => attributesToRetrieve}), :read, request_options)
246
+ client.get(Protocol.object_uri(name, objectID, { :attributes => attributes_to_retrieve }), :read, request_options)
232
247
  end
233
248
  end
234
249
 
@@ -236,19 +251,20 @@ module Algolia
236
251
  # Get a list of objects from this index
237
252
  #
238
253
  # @param objectIDs the array of unique identifier of the objects to retrieve
239
- # @param attributesToRetrieve (optional) if set, contains the list of attributes to retrieve as an array of strings of a string separated by ","
254
+ # @param attributes_to_retrieve (optional) if set, contains the list of attributes to retrieve as an array of strings of a string separated by ","
240
255
  # @param request_options contains extra parameters to send with your query
241
256
  #
242
- def get_objects(objectIDs, attributesToRetrieve = nil, request_options = {})
243
- attributesToRetrieve = attributesToRetrieve.join(',') if attributesToRetrieve.is_a?(Array)
257
+ def get_objects(objectIDs, attributes_to_retrieve = nil, request_options = {})
258
+ attributes_to_retrieve = attributes_to_retrieve.join(',') if attributes_to_retrieve.is_a?(Array)
244
259
  requests = objectIDs.map do |objectID|
245
- req = {:indexName => name, :objectID => objectID.to_s}
246
- req[:attributesToRetrieve] = attributesToRetrieve unless attributesToRetrieve.nil?
260
+ req = { :indexName => name, :objectID => objectID.to_s }
261
+ req[:attributesToRetrieve] = attributes_to_retrieve unless attributes_to_retrieve.nil?
247
262
  req
248
263
  end
249
264
  client.post(Protocol.objects_uri, { :requests => requests }.to_json, :read, request_options)['results']
250
265
  end
251
266
 
267
+ #
252
268
  # Check the status of a task on the server.
253
269
  # All server task are asynchronous and you can check the status of a task with this method.
254
270
  #
@@ -259,61 +275,66 @@ module Algolia
259
275
  client.get(Protocol.task_uri(name, taskID), :read, request_options)['status']
260
276
  end
261
277
 
278
+ #
262
279
  # Wait the publication of a task on the server.
263
280
  # All server task are asynchronous and you can check with this method that the task is published.
264
281
  #
265
282
  # @param taskID the id of the task returned by server
266
- # @param timeBeforeRetry the time in milliseconds before retry (default = 100ms)
283
+ # @param time_before_retry the time in milliseconds before retry (default = 100ms)
267
284
  # @param request_options contains extra parameters to send with your query
268
285
  #
269
- def wait_task(taskID, timeBeforeRetry = WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options = {})
286
+ def wait_task(taskID, time_before_retry = WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options = {})
270
287
  loop do
271
288
  status = get_task_status(taskID, request_options)
272
289
  if status == 'published'
273
290
  return
274
291
  end
275
- sleep(timeBeforeRetry.to_f / 1000)
292
+ sleep(time_before_retry.to_f / 1000)
276
293
  end
277
294
  end
278
295
 
296
+ #
279
297
  # Override the content of an object
280
298
  #
281
- # @param obj the object to save
282
- # @param objectID the associated objectID, if nil 'obj' must contain an 'objectID' key
299
+ # @param object the object to save
300
+ # @param objectID the associated objectID, if nil 'object' must contain an 'objectID' key
283
301
  # @param request_options contains extra parameters to send with your query
284
302
  #
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)
303
+ def save_object(object, objectID = nil, request_options = {})
304
+ client.put(Protocol.object_uri(name, get_objectID(object, objectID)), object.to_json, :write, request_options)
287
305
  end
288
306
 
307
+ #
289
308
  # Override the content of object and wait end of indexing
290
309
  #
291
- # @param obj the object to save
292
- # @param objectID the associated objectID, if nil 'obj' must contain an 'objectID' key
310
+ # @param object the object to save
311
+ # @param objectID the associated objectID, if nil 'object' must contain an 'objectID' key
293
312
  # @param request_options contains extra parameters to send with your query
294
313
  #
295
- def save_object!(obj, objectID = nil, request_options = {})
296
- res = save_object(obj, objectID, request_options)
314
+ def save_object!(object, objectID = nil, request_options = {})
315
+ res = save_object(object, objectID, request_options)
297
316
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
298
317
  res
299
318
  end
300
319
 
320
+ #
301
321
  # Override the content of several objects
302
322
  #
303
- # @param objs the array of objects to save, each object must contain an 'objectID' key
323
+ # @param objects the array of objects to save, each object must contain an 'objectID' key
304
324
  # @param request_options contains extra parameters to send with your query
305
325
  #
306
- def save_objects(objs, request_options = {})
307
- batch(build_batch('updateObject', objs, true), request_options)
326
+ def save_objects(objects, request_options = {})
327
+ batch(build_batch('updateObject', objects, true), request_options)
308
328
  end
309
329
 
330
+ #
310
331
  # Override the content of several objects and wait end of indexing
311
332
  #
312
- # @param objs the array of objects to save, each object must contain an objectID attribute
333
+ # @param objects the array of objects to save, each object must contain an objectID attribute
313
334
  # @param request_options contains extra parameters to send with your query
314
335
  #
315
- def save_objects!(objs, request_options = {})
316
- res = save_objects(objs, request_options)
336
+ def save_objects!(objects, request_options = {})
337
+ res = save_objects(objects, request_options)
317
338
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
318
339
  res
319
340
  end
@@ -321,39 +342,39 @@ module Algolia
321
342
  #
322
343
  # Update partially an object (only update attributes passed in argument)
323
344
  #
324
- # @param obj the object attributes to override
325
- # @param objectID the associated objectID, if nil 'obj' must contain an 'objectID' key
345
+ # @param object the object attributes to override
346
+ # @param objectID the associated objectID, if nil 'object' must contain an 'objectID' key
326
347
  # @param create_if_not_exits a boolean, if true creates the object if this one doesn't exist
327
348
  # @param request_options contains extra parameters to send with your query
328
349
  #
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)
350
+ def partial_update_object(object, objectID = nil, create_if_not_exits = true, request_options = {})
351
+ client.post(Protocol.partial_object_uri(name, get_objectID(object, objectID), create_if_not_exits), object.to_json, :write, request_options)
331
352
  end
332
353
 
333
354
  #
334
- # Partially Override the content of several objects
355
+ # Partially override the content of several objects
335
356
  #
336
- # @param objs an array of objects to update (each object must contains a objectID attribute)
357
+ # @param objects an array of objects to update (each object must contains a objectID attribute)
337
358
  # @param create_if_not_exits a boolean, if true create the objects if they don't exist
338
359
  # @param request_options contains extra parameters to send with your query
339
360
  #
340
- def partial_update_objects(objs, create_if_not_exits = true, request_options = {})
361
+ def partial_update_objects(objects, create_if_not_exits = true, request_options = {})
341
362
  if create_if_not_exits
342
- batch(build_batch('partialUpdateObject', objs, true), request_options)
363
+ batch(build_batch('partialUpdateObject', objects, true), request_options)
343
364
  else
344
- batch(build_batch('partialUpdateObjectNoCreate', objs, true), request_options)
365
+ batch(build_batch('partialUpdateObjectNoCreate', objects, true), request_options)
345
366
  end
346
367
  end
347
368
 
348
369
  #
349
- # Partially Override the content of several objects and wait end of indexing
370
+ # Partially override the content of several objects and wait end of indexing
350
371
  #
351
- # @param objs an array of objects to update (each object must contains a objectID attribute)
372
+ # @param objects an array of objects to update (each object must contains a objectID attribute)
352
373
  # @param create_if_not_exits a boolean, if true create the objects if they don't exist
353
374
  # @param request_options contains extra parameters to send with your query
354
375
  #
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)
376
+ def partial_update_objects!(objects, create_if_not_exits = true, request_options = {})
377
+ res = partial_update_objects(objects, create_if_not_exits, request_options)
357
378
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
358
379
  res
359
380
  end
@@ -361,13 +382,13 @@ module Algolia
361
382
  #
362
383
  # Update partially an object (only update attributes passed in argument) and wait indexing
363
384
  #
364
- # @param obj the attributes to override
365
- # @param objectID the associated objectID, if nil 'obj' must contain an 'objectID' key
385
+ # @param object the attributes to override
386
+ # @param objectID the associated objectID, if nil 'object' must contain an 'objectID' key
366
387
  # @param create_if_not_exits a boolean, if true creates the object if this one doesn't exist
367
388
  # @param request_options contains extra parameters to send with your query
368
389
  #
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)
390
+ def partial_update_object!(object, objectID = nil, create_if_not_exits = true, request_options = {})
391
+ res = partial_update_object(object, objectID, create_if_not_exits, request_options)
371
392
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
372
393
  res
373
394
  end
@@ -398,22 +419,22 @@ module Algolia
398
419
  #
399
420
  # Delete several objects
400
421
  #
401
- # @param objs an array of objectIDs
422
+ # @param objects an array of objectIDs
402
423
  # @param request_options contains extra parameters to send with your query
403
424
  #
404
- def delete_objects(objs, request_options = {})
405
- check_array objs
406
- batch(build_batch('deleteObject', objs.map { |objectID| { :objectID => objectID } }, false), request_options)
425
+ def delete_objects(objects, request_options = {})
426
+ check_array(objects)
427
+ batch(build_batch('deleteObject', objects.map { |objectID| { :objectID => objectID } }, false), request_options)
407
428
  end
408
429
 
409
430
  #
410
431
  # Delete several objects and wait end of indexing
411
432
  #
412
- # @param objs an array of objectIDs
433
+ # @param objects an array of objectIDs
413
434
  # @param request_options contains extra parameters to send with your query
414
435
  #
415
- def delete_objects!(objs, request_options = {})
416
- res = delete_objects(objs, request_options)
436
+ def delete_objects!(objects, request_options = {})
437
+ res = delete_objects(objects, request_options)
417
438
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
418
439
  res
419
440
  end
@@ -422,6 +443,7 @@ module Algolia
422
443
  # Delete all objects matching a query
423
444
  # This method retrieves all objects synchronously but deletes in batch
424
445
  # asynchronously
446
+ #
425
447
  # @param query the query string
426
448
  # @param params the optional query parameters
427
449
  # @param request_options contains extra parameters to send with your query
@@ -445,7 +467,7 @@ module Algolia
445
467
  hits = result['hits']
446
468
  break if hits.empty?
447
469
 
448
- ids += hits.map { |h| h['objectID'] }
470
+ ids += hits.map { |hit| hit['objectID'] }
449
471
  end
450
472
 
451
473
  delete_objects(ids, request_options)
@@ -516,6 +538,7 @@ module Algolia
516
538
  client.put(Protocol.settings_uri(name, options), new_settings.to_json, :write, request_options)
517
539
  end
518
540
 
541
+ #
519
542
  # Set settings for this index and wait end of indexing
520
543
  #
521
544
  def set_settings!(new_settings, options = {}, request_options = {})
@@ -524,12 +547,15 @@ module Algolia
524
547
  res
525
548
  end
526
549
 
550
+ #
527
551
  # Get settings of this index
552
+ #
528
553
  def get_settings(options = {}, request_options = {})
529
554
  options['getVersion'] = 2 if !options[:getVersion] && !options['getVersion']
530
555
  client.get(Protocol.settings_uri(name, options).to_s, :read, request_options)
531
556
  end
532
557
 
558
+ #
533
559
  # List all existing user keys with their associated ACLs
534
560
  #
535
561
  # Deprecated: Please us `client.list_api_keys` instead.
@@ -537,6 +563,7 @@ module Algolia
537
563
  client.get(Protocol.index_keys_uri(name), :read, request_options)
538
564
  end
539
565
 
566
+ #
540
567
  # Get ACL of a user key
541
568
  #
542
569
  # Deprecated: Please us `client.get_api_key` instead.
@@ -547,9 +574,9 @@ module Algolia
547
574
  #
548
575
  # Create a new user key
549
576
  #
550
- # @param obj can be two different parameters:
551
- # The list of parameters for this key. Defined by a NSDictionary that
552
- # can contains the following values:
577
+ # @param object can be two different parameters:
578
+ # The list of parameters for this key. Defined by a Hash that can
579
+ # contains the following values:
553
580
  # - acl: array of string
554
581
  # - validity: int
555
582
  # - referers: array of string
@@ -557,7 +584,7 @@ module Algolia
557
584
  # - maxHitsPerQuery: integer
558
585
  # - queryParameters: string
559
586
  # - maxQueriesPerIPPerHour: integer
560
- # Or the list of ACL for this key. Defined by an array of NSString that
587
+ # Or the list of ACL for this key. Defined by an array of String that
561
588
  # can contains the following values:
562
589
  # - search: allow to search (https and http)
563
590
  # - addObject: allows to add/update an object in the index (https only)
@@ -566,36 +593,29 @@ module Algolia
566
593
  # - settings : allows to get index settings (https only)
567
594
  # - editSettings : allows to change index settings (https only)
568
595
  # @param validity the number of seconds after which the key will be automatically removed (0 means no time limit for this key)
569
- # @param maxQueriesPerIPPerHour the maximum number of API calls allowed from an IP address per hour (0 means unlimited)
570
- # @param maxHitsPerQuery the maximum number of hits this API key can retrieve in one call (0 means unlimited)
596
+ # @param max_queries_per_IP_per_hour the maximum number of API calls allowed from an IP address per hour (0 means unlimited)
597
+ # @param max_hits_per_query the maximum number of hits this API key can retrieve in one call (0 means unlimited)
571
598
  # @param request_options contains extra parameters to send with your query
572
- #
 # Deprecated: Please use `client.add_api_key` instead
573
- # Deprecated: Please us `client.add_api_key` instead.
574
- def add_api_key(obj, validity = 0, maxQueriesPerIPPerHour = 0, maxHitsPerQuery = 0, request_options = {})
575
- if obj.instance_of? Array
576
- params = {
577
- :acl => obj
578
- }
599
+ #
 # Deprecated: Please use `client.add_api_key` instead
600
+ def add_api_key(object, validity = 0, max_queries_per_IP_per_hour = 0, max_hits_per_query = 0, request_options = {})
601
+ if object.instance_of?(Array)
602
+ params = { :acl => object }
579
603
  else
580
- params = obj
581
- end
582
- if validity != 0
583
- params["validity"] = validity.to_i
584
- end
585
- if maxQueriesPerIPPerHour != 0
586
- params["maxQueriesPerIPPerHour"] = maxQueriesPerIPPerHour.to_i
587
- end
588
- if maxHitsPerQuery != 0
589
- params["maxHitsPerQuery"] = maxHitsPerQuery.to_i
604
+ params = object
590
605
  end
606
+
607
+ params['validity'] = validity.to_i if validity != 0
608
+ params['maxHitsPerQuery'] = max_hits_per_query.to_i if max_hits_per_query != 0
609
+ params['maxQueriesPerIPPerHour'] = max_queries_per_IP_per_hour.to_i if max_queries_per_IP_per_hour != 0
610
+
591
611
  client.post(Protocol.index_keys_uri(name), params.to_json, :write, request_options)
592
612
  end
593
613
 
594
614
  #
595
615
  # Update a user key
596
616
  #
597
- # @param obj can be two different parameters:
598
- # The list of parameters for this key. Defined by a NSDictionary that
617
+ # @param object can be two different parameters:
618
+ # The list of parameters for this key. Defined by a Hash that
599
619
  # can contains the following values:
600
620
  # - acl: array of string
601
621
  # - validity: int
@@ -604,7 +624,7 @@ module Algolia
604
624
  # - maxHitsPerQuery: integer
605
625
  # - queryParameters: string
606
626
  # - maxQueriesPerIPPerHour: integer
607
- # Or the list of ACL for this key. Defined by an array of NSString that
627
+ # Or the list of ACL for this key. Defined by an array of String that
608
628
  # can contains the following values:
609
629
  # - search: allow to search (https and http)
610
630
  # - addObject: allows to add/update an object in the index (https only)
@@ -613,69 +633,70 @@ module Algolia
613
633
  # - settings : allows to get index settings (https only)
614
634
  # - editSettings : allows to change index settings (https only)
615
635
  # @param validity the number of seconds after which the key will be automatically removed (0 means no time limit for this key)
616
- # @param maxQueriesPerIPPerHour the maximum number of API calls allowed from an IP address per hour (0 means unlimited)
617
- # @param maxHitsPerQuery the maximum number of hits this API key can retrieve in one call (0 means unlimited)
636
+ # @param max_queries_per_IP_per_hour the maximum number of API calls allowed from an IP address per hour (0 means unlimited)
637
+ # @param max_hits_per_query the maximum number of hits this API key can retrieve in one call (0 means unlimited)
618
638
  # @param request_options contains extra parameters to send with your query
619
639
  #
620
- # Deprecated: Please us `client.update_api_key` instead.
621
- def update_api_key(key, obj, validity = 0, maxQueriesPerIPPerHour = 0, maxHitsPerQuery = 0, request_options = {})
622
- if obj.instance_of? Array
623
- params = {
624
- :acl => obj
625
- }
640
+ # Deprecated: Please use `client.update_api_key` instead
641
+ def update_api_key(key, object, validity = 0, max_queries_per_IP_per_hour = 0, max_hits_per_query = 0, request_options = {})
642
+ if object.instance_of?(Array)
643
+ params = { :acl => object }
626
644
  else
627
- params = obj
628
- end
629
- if validity != 0
630
- params["validity"] = validity.to_i
631
- end
632
- if maxQueriesPerIPPerHour != 0
633
- params["maxQueriesPerIPPerHour"] = maxQueriesPerIPPerHour.to_i
634
- end
635
- if maxHitsPerQuery != 0
636
- params["maxHitsPerQuery"] = maxHitsPerQuery.to_i
645
+ params = object
637
646
  end
647
+
648
+ params['validity'] = validity.to_i if validity != 0
649
+ params['maxHitsPerQuery'] = max_hits_per_query.to_i if max_hits_per_query != 0
650
+ params['maxQueriesPerIPPerHour'] = max_queries_per_IP_per_hour.to_i if max_queries_per_IP_per_hour != 0
651
+
638
652
  client.put(Protocol.index_key_uri(name, key), params.to_json, :write, request_options)
639
653
  end
640
654
 
641
-
655
+ #
642
656
  # Delete an existing user key
643
657
  #
644
- # Deprecated: Please us `client.delete_api_key` instead.
658
+ # Deprecated: Please use `client.delete_api_key` instead
645
659
  def delete_api_key(key, request_options = {})
646
660
  client.delete(Protocol.index_key_uri(name, key), :write, request_options)
647
661
  end
648
662
 
663
+ #
649
664
  # Send a batch request
665
+ #
650
666
  def batch(request, request_options = {})
651
667
  client.post(Protocol.batch_uri(name), request.to_json, :batch, request_options)
652
668
  end
653
669
 
670
+ #
654
671
  # Send a batch request and wait the end of the indexing
672
+ #
655
673
  def batch!(request, request_options = {})
656
674
  res = batch(request, request_options)
657
675
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
658
676
  res
659
677
  end
660
678
 
679
+ #
661
680
  # Search for facet values
662
681
  #
663
- # @param facet Name of the facet to search. It must have been declared in the
682
+ # @param facet_name Name of the facet to search. It must have been declared in the
664
683
  # index's`attributesForFaceting` setting with the `searchable()` modifier.
665
- # @param text Text to search for in the facet's values
666
- # @param query An optional query to take extra search parameters into account.
684
+ # @param facet_query Text to search for in the facet's values
685
+ # @param search_parameters An optional query to take extra search parameters into account.
667
686
  # These parameters apply to index objects like in a regular search query.
668
687
  # Only facet values contained in the matched objects will be returned.
669
688
  # @param request_options contains extra parameters to send with your query
670
- def search_for_facet_values(facet, text, query = {}, request_options = {})
671
- params = query.clone
672
- params['facetQuery'] = text
673
- client.post(Protocol.search_facet_uri(name, facet), params.to_json, :read, request_options)
689
+ #
690
+ def search_for_facet_values(facet_name, facet_query, search_parameters = {}, request_options = {})
691
+ params = search_parameters.clone
692
+ params['facetQuery'] = facet_query
693
+ client.post(Protocol.search_facet_uri(name, facet_name), params.to_json, :read, request_options)
674
694
  end
675
695
 
676
696
  # deprecated
677
697
  alias_method :search_facet, :search_for_facet_values
678
698
 
699
+ #
679
700
  # Perform a search with disjunctive facets generating as many queries as number of disjunctive facets
680
701
  #
681
702
  # @param query the query
@@ -684,6 +705,7 @@ module Algolia
684
705
  # @param refinements a hash ("string" -> ["array", "of", "refined", "values"]) representing the current refinements
685
706
  # ex: { "my_facet1" => ["my_value1", ["my_value2"], "my_disjunctive_facet1" => ["my_value1", "my_value2"] }
686
707
  # @param request_options contains extra parameters to send with your query
708
+ #
687
709
  def search_disjunctive_faceting(query, disjunctive_facets, params = {}, refinements = {}, request_options = {})
688
710
  raise ArgumentError.new('Argument "disjunctive_facets" must be a String or an Array') unless disjunctive_facets.is_a?(String) || disjunctive_facets.is_a?(Array)
689
711
  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?
@@ -771,11 +793,13 @@ module Algolia
771
793
  Algolia.list_indexes(request_options)
772
794
  end
773
795
 
796
+ #
774
797
  # Search synonyms
775
798
  #
776
799
  # @param query the query
777
800
  # @param params an optional hash of :type, :page, :hitsPerPage
778
801
  # @param request_options contains extra parameters to send with your query
802
+ #
779
803
  def search_synonyms(query, params = {}, request_options = {})
780
804
  type = params[:type] || params['type']
781
805
  type = type.join(',') if type.is_a?(Array)
@@ -790,6 +814,7 @@ module Algolia
790
814
  client.post(Protocol.search_synonyms_uri(name), params.to_json, :read, request_options)
791
815
  end
792
816
 
817
+ #
793
818
  # Get a synonym
794
819
  #
795
820
  # @param objectID the synonym objectID
@@ -798,94 +823,112 @@ module Algolia
798
823
  client.get(Protocol.synonym_uri(name, objectID), :read, request_options)
799
824
  end
800
825
 
826
+ #
801
827
  # Delete a synonym
802
828
  #
803
829
  # @param objectID the synonym objectID
804
830
  # @param forward_to_replicas should we forward the delete to replica indices
805
831
  # @param request_options contains extra parameters to send with your query
832
+ #
806
833
  def delete_synonym(objectID, forward_to_replicas = false, request_options = {})
807
834
  client.delete("#{Protocol.synonym_uri(name, objectID)}?forwardToReplicas=#{forward_to_replicas}", :write, request_options)
808
835
  end
809
836
 
837
+ #
810
838
  # Delete a synonym and wait the end of indexing
811
839
  #
812
840
  # @param objectID the synonym objectID
813
841
  # @param forward_to_replicas should we forward the delete to replica indices
814
842
  # @param request_options contains extra parameters to send with your query
843
+ #
815
844
  def delete_synonym!(objectID, forward_to_replicas = false, request_options = {})
816
845
  res = delete_synonym(objectID, forward_to_replicas, request_options)
817
846
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
818
847
  res
819
848
  end
820
849
 
850
+ #
821
851
  # Save a synonym
822
852
  #
823
853
  # @param objectID the synonym objectID
824
854
  # @param synonym the synonym
825
855
  # @param forward_to_replicas should we forward the delete to replica indices
826
856
  # @param request_options contains extra parameters to send with your query
857
+ #
827
858
  def save_synonym(objectID, synonym, forward_to_replicas = false, request_options = {})
828
859
  client.put("#{Protocol.synonym_uri(name, objectID)}?forwardToReplicas=#{forward_to_replicas}", synonym.to_json, :write, request_options)
829
860
  end
830
861
 
862
+ #
831
863
  # Save a synonym and wait the end of indexing
832
864
  #
833
865
  # @param objectID the synonym objectID
834
866
  # @param synonym the synonym
835
867
  # @param forward_to_replicas should we forward the delete to replica indices
836
868
  # @param request_options contains extra parameters to send with your query
869
+ #
837
870
  def save_synonym!(objectID, synonym, forward_to_replicas = false, request_options = {})
838
871
  res = save_synonym(objectID, synonym, forward_to_replicas, request_options)
839
872
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
840
873
  res
841
874
  end
842
875
 
876
+ #
843
877
  # Clear all synonyms
844
878
  #
845
879
  # @param forward_to_replicas should we forward the delete to replica indices
846
880
  # @param request_options contains extra parameters to send with your query
881
+ #
847
882
  def clear_synonyms(forward_to_replicas = false, request_options = {})
848
883
  client.post("#{Protocol.clear_synonyms_uri(name)}?forwardToReplicas=#{forward_to_replicas}", {}, :write, request_options)
849
884
  end
850
885
 
886
+ #
851
887
  # Clear all synonyms and wait the end of indexing
852
888
  #
853
889
  # @param forward_to_replicas should we forward the delete to replica indices
854
890
  # @param request_options contains extra parameters to send with your query
891
+ #
855
892
  def clear_synonyms!(forward_to_replicas = false, request_options = {})
856
893
  res = clear_synonyms(forward_to_replicas, request_options)
857
894
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
858
895
  res
859
896
  end
860
897
 
898
+ #
861
899
  # Add/Update an array of synonyms
862
900
  #
863
901
  # @param synonyms the array of synonyms to add/update
864
902
  # @param forward_to_replicas should we forward the delete to replica indices
865
903
  # @param replace_existing_synonyms should we replace the existing synonyms before adding the new ones
866
904
  # @param request_options contains extra parameters to send with your query
905
+ #
867
906
  def batch_synonyms(synonyms, forward_to_replicas = false, replace_existing_synonyms = false, request_options = {})
868
907
  client.post("#{Protocol.batch_synonyms_uri(name)}?forwardToReplicas=#{forward_to_replicas}&replaceExistingSynonyms=#{replace_existing_synonyms}", synonyms.to_json, :batch, request_options)
869
908
  end
870
909
 
910
+ #
871
911
  # Add/Update an array of synonyms and wait the end of indexing
872
912
  #
873
913
  # @param synonyms the array of synonyms to add/update
874
914
  # @param forward_to_replicas should we forward the delete to replica indices
875
915
  # @param replace_existing_synonyms should we replace the existing synonyms before adding the new ones
876
916
  # @param request_options contains extra parameters to send with your query
917
+ #
877
918
  def batch_synonyms!(synonyms, forward_to_replicas = false, replace_existing_synonyms = false, request_options = {})
878
919
  res = batch_synonyms(synonyms, forward_to_replicas, replace_existing_synonyms, request_options)
879
920
  wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
880
921
  res
881
922
  end
882
923
 
924
+ #
883
925
  # Export the full list of synonyms
884
- # Accepts an optional block to which it will pass each synonym
885
- # Also returns an array with all the synonyms
926
+ # Accepts an optional block to which it will pass each synonym
927
+ # Also returns an array with all the synonyms
886
928
  #
887
929
  # @param hits_per_page Amount of synonyms to retrieve on each internal request - Optional - Default: 100
888
930
  # @param request_options contains extra parameters to send with your query - Optional
931
+ #
889
932
  def export_synonyms(hits_per_page = 100, request_options = {}, &_block)
890
933
  res = []
891
934
  page = 0
@@ -901,11 +944,13 @@ module Algolia
901
944
  res
902
945
  end
903
946
 
947
+ #
904
948
  # Search rules
905
949
  #
906
950
  # @param query the query
907
951
  # @param params an optional hash of :anchoring, :context, :page, :hitsPerPage
908
952
  # @param request_options contains extra parameters to send with your query
953
+ #
909
954
  def search_rules(query, params = {}, request_options = {})
910
955
  anchoring = params[:anchoring]
911
956
  context = params[:context]
@@ -921,103 +966,123 @@ module Algolia
921
966
  client.post(Protocol.search_rules_uri(name), params.to_json, :read, request_options)
922
967
  end
923
968
 
969
+ #
924
970
  # Get a rule
925
971
  #
926
972
  # @param objectID the rule objectID
927
973
  # @param request_options contains extra parameters to send with your query
974
+ #
928
975
  def get_rule(objectID, request_options = {})
929
976
  client.get(Protocol.rule_uri(name, objectID), :read, request_options)
930
977
  end
931
978
 
979
+ #
932
980
  # Delete a rule
933
981
  #
934
982
  # @param objectID the rule objectID
935
983
  # @param forward_to_replicas should we forward the delete to replica indices
936
984
  # @param request_options contains extra parameters to send with your query
985
+ #
937
986
  def delete_rule(objectID, forward_to_replicas = false, request_options = {})
938
987
  client.delete("#{Protocol.rule_uri(name, objectID)}?forwardToReplicas=#{forward_to_replicas}", :write, request_options)
939
988
  end
940
989
 
990
+ #
941
991
  # Delete a rule and wait the end of indexing
942
992
  #
943
993
  # @param objectID the rule objectID
944
994
  # @param forward_to_replicas should we forward the delete to replica indices
945
995
  # @param request_options contains extra parameters to send with your query
996
+ #
946
997
  def delete_rule!(objectID, forward_to_replicas = false, request_options = {})
947
998
  res = delete_rule(objectID, forward_to_replicas, request_options)
948
- wait_task(res["taskID"], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
999
+ wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
949
1000
  return res
950
1001
  end
951
1002
 
1003
+ #
952
1004
  # Save a rule
953
1005
  #
954
1006
  # @param objectID the rule objectID
955
1007
  # @param rule the rule
956
1008
  # @param forward_to_replicas should we forward the delete to replica indices
957
1009
  # @param request_options contains extra parameters to send with your query
1010
+ #
958
1011
  def save_rule(objectID, rule, forward_to_replicas = false, request_options = {})
959
1012
  raise ArgumentError.new('objectID must not be blank') if objectID.nil? || objectID == ''
960
1013
  client.put("#{Protocol.rule_uri(name, objectID)}?forwardToReplicas=#{forward_to_replicas}", rule.to_json, :write, request_options)
961
1014
  end
962
1015
 
1016
+ #
963
1017
  # Save a rule and wait the end of indexing
964
1018
  #
965
1019
  # @param objectID the rule objectID
966
1020
  # @param rule the rule
967
1021
  # @param forward_to_replicas should we forward the delete to replica indices
968
1022
  # @param request_options contains extra parameters to send with your query
1023
+ #
969
1024
  def save_rule!(objectID, rule, forward_to_replicas = false, request_options = {})
970
1025
  res = save_rule(objectID, rule, forward_to_replicas, request_options)
971
- wait_task(res["taskID"], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
1026
+ wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
972
1027
  return res
973
1028
  end
974
1029
 
1030
+ #
975
1031
  # Clear all rules
976
1032
  #
977
1033
  # @param forward_to_replicas should we forward the delete to replica indices
978
1034
  # @param request_options contains extra parameters to send with your query
1035
+ #
979
1036
  def clear_rules(forward_to_replicas = false, request_options = {})
980
1037
  client.post("#{Protocol.clear_rules_uri(name)}?forwardToReplicas=#{forward_to_replicas}", {}, :write, request_options)
981
1038
  end
982
1039
 
1040
+ #
983
1041
  # Clear all rules and wait the end of indexing
984
1042
  #
985
1043
  # @param forward_to_replicas should we forward the delete to replica indices
986
1044
  # @param request_options contains extra parameters to send with your query
1045
+ #
987
1046
  def clear_rules!(forward_to_replicas = false, request_options = {})
988
1047
  res = clear_rules(forward_to_replicas, request_options)
989
- wait_task(res["taskID"], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
1048
+ wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
990
1049
  return res
991
1050
  end
992
1051
 
1052
+ #
993
1053
  # Add/Update an array of rules
994
1054
  #
995
1055
  # @param rules the array of rules to add/update
996
1056
  # @param forward_to_replicas should we forward the delete to replica indices
997
1057
  # @param clear_existing_rules should we clear the existing rules before adding the new ones
998
1058
  # @param request_options contains extra parameters to send with your query
1059
+ #
999
1060
  def batch_rules(rules, forward_to_replicas = false, clear_existing_rules = false, request_options = {})
1000
1061
  client.post("#{Protocol.batch_rules_uri(name)}?forwardToReplicas=#{forward_to_replicas}&clearExistingRules=#{clear_existing_rules}", rules.to_json, :batch, request_options)
1001
1062
  end
1002
1063
 
1064
+ #
1003
1065
  # Add/Update an array of rules and wait the end of indexing
1004
1066
  #
1005
1067
  # @param rules the array of rules to add/update
1006
1068
  # @param forward_to_replicas should we forward the delete to replica indices
1007
1069
  # @param clear_existing_rules should we clear the existing rules before adding the new ones
1008
1070
  # @param request_options contains extra parameters to send with your query
1071
+ #
1009
1072
  def batch_rules!(rules, forward_to_replicas = false, clear_existing_rules = false, request_options = {})
1010
1073
  res = batch_rules(rules, forward_to_replicas, clear_existing_rules, request_options)
1011
- wait_task(res["taskID"], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
1074
+ wait_task(res['taskID'], WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, request_options)
1012
1075
  return res
1013
1076
  end
1014
1077
 
1078
+ #
1015
1079
  # Export the full list of rules
1016
- # Accepts an optional block to which it will pass each rule
1017
- # Also returns an array with all the rules
1080
+ # Accepts an optional block to which it will pass each rule
1081
+ # Also returns an array with all the rules
1018
1082
  #
1019
1083
  # @param hits_per_page Amount of rules to retrieve on each internal request - Optional - Default: 100
1020
1084
  # @param request_options contains extra parameters to send with your query - Optional
1085
+ #
1021
1086
  def export_rules(hits_per_page = 100, request_options = {}, &_block)
1022
1087
  res = []
1023
1088
  page = 0
@@ -1041,35 +1106,36 @@ module Algolia
1041
1106
  alias_method :delete_user_key, :delete_api_key
1042
1107
 
1043
1108
  private
1044
- def check_array(objs)
1045
- raise ArgumentError.new("argument must be an array of objects") if !objs.is_a?(Array)
1109
+
1110
+ def check_array(object)
1111
+ raise ArgumentError.new('argument must be an array of objects') if !object.is_a?(Array)
1046
1112
  end
1047
1113
 
1048
- def check_object(obj, in_array = false)
1049
- case obj
1114
+ def check_object(object, in_array = false)
1115
+ case object
1050
1116
  when Array
1051
- raise ArgumentError.new(in_array ? "argument must be an array of objects" : "argument must not be an array")
1117
+ raise ArgumentError.new(in_array ? 'argument must be an array of objects' : 'argument must not be an array')
1052
1118
  when String, Integer, Float, TrueClass, FalseClass, NilClass
1053
- raise ArgumentError.new("argument must be an #{'array of' if in_array} object, got: #{obj.inspect}")
1119
+ raise ArgumentError.new("argument must be an #{'array of' if in_array} object, got: #{object.inspect}")
1054
1120
  else
1055
1121
  # ok
1056
1122
  end
1057
1123
  end
1058
1124
 
1059
- def get_objectID(obj, objectID = nil)
1060
- check_object obj
1061
- objectID ||= obj[:objectID] || obj["objectID"]
1125
+ def get_objectID(object, objectID = nil)
1126
+ check_object(object)
1127
+ objectID ||= object[:objectID] || object['objectID']
1062
1128
  raise ArgumentError.new("Missing 'objectID'") if objectID.nil?
1063
1129
  return objectID
1064
1130
  end
1065
1131
 
1066
- def build_batch(action, objs, with_object_id = false)
1067
- check_array objs
1132
+ def build_batch(action, objects, with_object_id = false)
1133
+ check_array(objects)
1068
1134
  {
1069
- :requests => objs.map { |obj|
1070
- check_object obj, true
1071
- h = { :action => action, :body => obj }
1072
- h[:objectID] = get_objectID(obj).to_s if with_object_id
1135
+ :requests => objects.map { |object|
1136
+ check_object(object, true)
1137
+ h = { :action => action, :body => object }
1138
+ h[:objectID] = get_objectID(object).to_s if with_object_id
1073
1139
  h
1074
1140
  }
1075
1141
  }