@@ -31,30 +31,38 @@ def __init__(self, domain, timeout=60):
31
31
self .domain = self ._prepare_domain (domain )
32
32
self .timeout = timeout
33
33
34
- def _prepare_domain (string ):
34
+ def _prepare_domain (self , string ):
35
35
"""Normalize user passed domain to a valid one."""
36
36
o = urlparse (string )
37
37
user_id , code = o .path .split ('/' )[2 :4 ]
38
38
return "{0}://{1}/rest/{2}/{3}" .format (o .scheme , o .netloc , user_id , code )
39
39
40
- def _prepare_params (self , params , prev = '' ):
40
+ def _prepare_params (self , params , prev = '' ):
41
41
"""Transforms list of params to a valid bitrix array."""
42
+ ret = ''
42
43
if isinstance (params , dict ):
43
- ret = ''
44
44
for key , value in params .items ():
45
45
if isinstance (value , dict ):
46
46
if prev :
47
47
key = "{0}[{1}]" .format (prev , key )
48
48
ret += self ._prepare_params (value , key )
49
49
elif (isinstance (value , list ) or isinstance (value , tuple )) and len (value ) > 0 :
50
50
for offset , val in enumerate (value ):
51
- ret += "{0}[{1}][{2}]={3}&" .format (prev , key , offset , val )
51
+ if isinstance (val , dict ):
52
+ ret += self ._prepare_params (
53
+ val , "{0}[{1}][{2}]" .format (prev , key , offset ))
54
+ else :
55
+ if prev :
56
+ ret += "{0}[{1}][{2}]={3}&" .format (
57
+ prev , key , offset , val )
58
+ else :
59
+ ret += "{0}[{1}]={2}&" .format (key , offset , val )
52
60
else :
53
61
if prev :
54
62
ret += "{0}[{1}]={2}&" .format (prev , key , value )
55
63
else :
56
64
ret += "{0}={1}&" .format (key , value )
57
- return ret
65
+ return ret
58
66
59
67
def callMethod (self , method , ** params ):
60
68
"""Calls a REST method with specified parameters.
@@ -79,7 +87,7 @@ def callMethod(self, method, **params):
79
87
# Looks like we need to wait until expires limitation time by Bitrix24 API
80
88
sleep (2 )
81
89
return self .callMethod (method , ** params )
82
-
90
+
83
91
if 'error' in r :
84
92
raise BitrixError (r )
85
93
if 'start' not in params :
0 commit comments