@@ -31,30 +31,38 @@ def __init__(self, domain, timeout=60):
3131 self .domain = self ._prepare_domain (domain )
3232 self .timeout = timeout
3333
34- def _prepare_domain (string ):
34+ def _prepare_domain (self , string ):
3535 """Normalize user passed domain to a valid one."""
3636 o = urlparse (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 , prev = '' ):
40+ def _prepare_params (self , params , prev = '' ):
4141 """Transforms list of params to a valid bitrix array."""
42+ ret = ''
4243 if isinstance (params , dict ):
43- ret = ''
4444 for key , value in params .items ():
4545 if isinstance (value , dict ):
4646 if prev :
4747 key = "{0}[{1}]" .format (prev , key )
4848 ret += self ._prepare_params (value , key )
4949 elif (isinstance (value , list ) or isinstance (value , tuple )) and len (value ) > 0 :
5050 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 )
5260 else :
5361 if prev :
5462 ret += "{0}[{1}]={2}&" .format (prev , key , value )
5563 else :
5664 ret += "{0}={1}&" .format (key , value )
57- return ret
65+ return ret
5866
5967 def callMethod (self , method , ** params ):
6068 """Calls a REST method with specified parameters.
@@ -79,7 +87,7 @@ def callMethod(self, method, **params):
7987 # Looks like we need to wait until expires limitation time by Bitrix24 API
8088 sleep (2 )
8189 return self .callMethod (method , ** params )
82-
90+
8391 if 'error' in r :
8492 raise BitrixError (r )
8593 if 'start' not in params :
0 commit comments