Skip to content

Commit 13de7ce

Browse files
Akop KesheshyanAkop Kesheshyan
authored andcommitted
optimizing param preparation
1 parent c744abf commit 13de7ce

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

bitrix24/bitrix24.py

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,24 @@ def _prepare_domain(string):
3737
user_id, code = o.path.split('/')[2:4]
3838
return "{0}://{1}/rest/{2}/{3}".format(o.scheme, o.netloc, user_id, code)
3939

40-
def _prepare_params(self, params):
40+
def _prepare_params(self, params, prev = ''):
4141
"""Transforms list of params to a valid bitrix array."""
42-
43-
new_params = {}
44-
for index, value in params.items():
45-
if type(value) is dict:
46-
for i, v in value.items():
47-
new_params['%s[%s]' % (index, i)] = v
48-
else:
49-
new_params[index] = value
50-
return new_params
42+
if isinstance(params, dict):
43+
ret = ''
44+
for key, value in params.items():
45+
if isinstance(value, dict):
46+
if prev:
47+
key = "{0}[{1}]".format(prev, key)
48+
ret += self._prepare_params(value, key)
49+
elif (isinstance(value, list) or isinstance(value, tuple)) and len(value) > 0:
50+
for offset, val in enumerate(value):
51+
ret += "{0}[{1}][{2}]={3}&".format(prev, key, offset, val)
52+
else:
53+
if prev:
54+
ret += "{0}[{1}]={2}&".format(prev, key, value)
55+
else:
56+
ret += "{0}={1}&".format(key, value)
57+
return ret
5158

5259
def callMethod(self, method, **params):
5360
"""Calls a REST method with specified parameters.
@@ -75,9 +82,9 @@ def callMethod(self, method, **params):
7582

7683
if 'error' in r:
7784
raise BitrixError(r)
78-
if 'page' not in params:
79-
params['page'] = 1
80-
if 'next' in r and r['total'] > (r['next']*params['page']):
81-
params['page'] += 1
85+
if 'start' not in params:
86+
params['start'] = 0
87+
if 'next' in r and r['total'] > params['start']:
88+
params['start'] += 50
8289
return r['result'] + self.callMethod(method, **params)
8390
return r['result']

0 commit comments

Comments
 (0)