Skip to content

Commit f3bf111

Browse files
feat(request_options): implement per requests headers/params
1 parent 098750c commit f3bf111

File tree

3 files changed

+145
-116
lines changed

3 files changed

+145
-116
lines changed

algoliasearch/client.py

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,8 @@ def multipleQueries(self, queries, index_name_key='indexName'):
214214

215215
def multiple_queries(self, queries,
216216
index_name_key='indexName',
217-
strategy='none'):
217+
strategy='none',
218+
request_options=None):
218219
"""This method allows to query multiple indexes with one API call."""
219220
path = '/1/indexes/*/queries'
220221

@@ -228,48 +229,48 @@ def multiple_queries(self, queries,
228229
})
229230

230231
data = {'requests': requests, 'strategy': strategy}
231-
return self._req(True, path, 'POST', data=data)
232+
return self._req(True, path, 'POST', request_options, data=data)
232233

233-
def batch(self, requests):
234+
def batch(self, requests, request_options=None):
234235
"""Send a batch request targeting multiple indices."""
235236
if isinstance(requests, (list, tuple)):
236237
requests = {'requests': requests}
237238

238239
path = '/1/indexes/*/batch'
239-
return self._req(False, path, 'POST', data=requests)
240+
return self._req(False, path, 'POST', request_options, data=requests)
240241

241242
@deprecated
242243
def listIndexes(self):
243244
return self.list_indexes()
244245

245-
def list_indexes(self):
246+
def list_indexes(self, request_options=None):
246247
"""
247248
List all existing indexes.
248249
Return an object of the form:
249250
{'items': [{ 'name': 'contacts', 'created_at': '2013-01-18T15:33:13.556Z'},
250251
{'name': 'notes', 'created_at': '2013-01-18T15:33:13.556Z'}]}
251252
"""
252-
return self._req(True, '/1/indexes', 'GET')
253+
return self._req(True, '/1/indexes', 'GET', request_options)
253254

254255
@deprecated
255256
def deleteIndex(self, index_name):
256257
return self.delete_index(index_name)
257258

258-
def delete_index(self, index_name):
259+
def delete_index(self, index_name, request_options=None):
259260
"""
260261
Delete an index.
261262
Return an object of the form: {'deleted_at': '2013-01-18T15:33:13.556Z'}
262263
263264
@param index_name the name of index to delete
264265
"""
265266
path = '/1/indexes/%s' % safe(index_name)
266-
return self._req(False, path, 'DELETE')
267+
return self._req(False, path, 'DELETE', request_options)
267268

268269
@deprecated
269270
def moveIndex(self, src_index_name, dst_index_name):
270271
return self.move_index(src_index_name, dst_index_name)
271272

272-
def move_index(self, src_index_name, dst_index_name):
273+
def move_index(self, src_index_name, dst_index_name, request_options=None):
273274
"""
274275
Move an existing index.
275276
@@ -279,13 +280,13 @@ def move_index(self, src_index_name, dst_index_name):
279280
"""
280281
path = '/1/indexes/%s/operation' % safe(src_index_name)
281282
request = {'operation': 'move', 'destination': dst_index_name}
282-
return self._req(False, path, 'POST', data=request)
283+
return self._req(False, path, 'POST', request_options, data=request)
283284

284285
@deprecated
285286
def copyIndex(self, src_index_name, dst_index_name):
286287
return self.copy_index(src_index_name, dst_index_name)
287288

288-
def copy_index(self, src_index_name, dst_index_name):
289+
def copy_index(self, src_index_name, dst_index_name, request_options=None):
289290
"""
290291
Copy an existing index.
291292
@@ -295,13 +296,13 @@ def copy_index(self, src_index_name, dst_index_name):
295296
"""
296297
path = '/1/indexes/%s/operation' % safe(src_index_name)
297298
request = {'operation': 'copy', 'destination': dst_index_name}
298-
return self._req(False, path, 'POST', data=request)
299+
return self._req(False, path, 'POST', request_options, data=request)
299300

300301
@deprecated
301302
def getLogs(self, offset=0, length=10, type='all'):
302303
return self.get_logs(offset, length, type)
303304

304-
def get_logs(self, offset=0, length=10, type='all'):
305+
def get_logs(self, offset=0, length=10, type='all', request_options=None):
305306
"""
306307
Return last logs entries.
307308
@@ -311,7 +312,7 @@ def get_logs(self, offset=0, length=10, type='all'):
311312
starting at offset. Maximum allowed value: 1000.
312313
"""
313314
params = {'offset': offset, 'length': length, 'type': type}
314-
return self._req(False, '/1/logs', 'GET', params)
315+
return self._req(False, '/1/logs', 'GET', request_options, params)
315316

316317
@deprecated
317318
def initIndex(self, index_name):
@@ -335,9 +336,9 @@ def list_user_keys(self):
335336
"""Use `list_api_keys`"""
336337
return self.list_api_keys()
337338

338-
def list_api_keys(self):
339+
def list_api_keys(self, request_options=None):
339340
"""List all existing api keys with their associated ACLs."""
340-
return self._req(True, '/1/keys', 'GET')
341+
return self._req(True, '/1/keys', 'GET', request_options)
341342

342343
@deprecated
343344
def getUserKeyACL(self, key):
@@ -348,10 +349,10 @@ def get_user_key_acl(self, key):
348349
"""Use `get_api_key_acl`"""
349350
return self.get_api_key_acl(key)
350351

351-
def get_api_key_acl(self, key):
352+
def get_api_key_acl(self, key, request_options=None):
352353
"""'Get ACL of an api key."""
353354
path = '/1/keys/%s' % key
354-
return self._req(True, path, 'GET')
355+
return self._req(True, path, 'GET', request_options)
355356

356357
@deprecated
357358
def deleteUserKey(self, key):
@@ -362,10 +363,10 @@ def delete_user_key(self, key):
362363
"""Use `delete_api_key`"""
363364
return self.delete_api_key(key)
364365

365-
def delete_api_key(self, key):
366+
def delete_api_key(self, key, request_options=None):
366367
"""Delete an existing api key."""
367368
path = '/1/keys/%s' % key
368-
return self._req(False, path, 'DELETE')
369+
return self._req(False, path, 'DELETE', request_options)
369370

370371
@deprecated
371372
def addUserKey(self, obj,
@@ -392,7 +393,8 @@ def add_api_key(self, obj,
392393
validity=0,
393394
max_queries_per_ip_per_hour=0,
394395
max_hits_per_query=0,
395-
indexes=None):
396+
indexes=None,
397+
request_options=None):
396398
"""
397399
Create a new api key.
398400
@@ -435,7 +437,7 @@ def add_api_key(self, obj,
435437
if indexes:
436438
obj['indexes'] = indexes
437439

438-
return self._req(False, '/1/keys', 'POST', data=obj)
440+
return self._req(False, '/1/keys', 'POST', request_options, data=obj)
439441

440442
@deprecated
441443
def update_user_key(self, key, obj,
@@ -454,7 +456,8 @@ def update_api_key(self, key, obj,
454456
validity=None,
455457
max_queries_per_ip_per_hour=None,
456458
max_hits_per_query=None,
457-
indexes=None):
459+
indexes=None,
460+
request_options=None):
458461
"""
459462
Update a api key.
460463
@@ -500,7 +503,7 @@ def update_api_key(self, key, obj,
500503
obj['indexes'] = indexes
501504

502505
path = '/1/keys/%s' % key
503-
return self._req(False, path, 'PUT', data=obj)
506+
return self._req(False, path, 'PUT', request_options, data=obj)
504507

505508
@deprecated
506509
def generateSecuredApiKey(self, private_api_key, tag_filters,
@@ -534,16 +537,16 @@ def generate_secured_api_key(self, private_api_key, queryParameters,
534537
securedKey = hmac.new(private_api_key.encode('utf-8'), queryParameters.encode('utf-8'), hashlib.sha256).hexdigest()
535538
return str(base64.b64encode(("%s%s" % (securedKey, queryParameters)).encode('utf-8')).decode('utf-8'))
536539

537-
def is_alive(self):
540+
def is_alive(self, request_options=None):
538541
"""
539542
Test if the server is alive.
540543
This performs a simple application-level ping. If up and running, the server answers with a basic message.
541544
"""
542-
return self._req(True, '/1/isalive', 'GET')
545+
return self._req(True, '/1/isalive', 'GET', request_options)
543546

544-
def _req(self, is_search, path, meth, params=None, data=None):
547+
def _req(self, is_search, path, meth, request_options, params=None, data=None):
545548
if len(self.api_key) > MAX_API_KEY_LENGTH:
546549
if data is None:
547550
data = {}
548551
data['apiKey'] = self.api_key
549-
return self._transport.req(is_search, path, meth, params, data)
552+
return self._transport.req(is_search, path, meth, params, data, request_options)

0 commit comments

Comments
 (0)