diff options
-rw-r--r-- | pyvyos/device.py | 59 |
1 files changed, 48 insertions, 11 deletions
diff --git a/pyvyos/device.py b/pyvyos/device.py index 5b54394..6d8a1dc 100644 --- a/pyvyos/device.py +++ b/pyvyos/device.py @@ -106,24 +106,61 @@ class VyDevice: Returns: dict: The payload for the API request. """ - data = { - 'op': op, - 'path': path + if not path: + data = { + 'op': op, + 'path': path + } + + if file is not None: + data['file'] = file + + if url is not None: + data['url'] = url + + if name is not None: + data['name'] = name + + payload = { + 'data': json.dumps(data), + 'key': self.apikey + } + + return payload + + elif isinstance(path, list) and len(path) == 1: + # If path is a list and contains only one element, use it directly + data = {'op': op, 'path': path[0]} + else: + data = [] + current_command = {'op': op, 'path': []} + for p in path: + if isinstance(p, list): + # If the current item is a list, merge it into the current command + if current_command['path']: + data.append(current_command) + current_command = {'op': op, 'path': p} + else: + # Otherwise, add the item to the current command's path + current_command['path'].append(p) + + # Add the last command to data + if current_command['path']: + data.append(current_command) + + payload = { + 'data': json.dumps(data), + 'key': self.apikey } if file is not None: data['file'] = file - + if url is not None: - data['url'] = url - + payload['url'] = url + if name is not None: data['name'] = name - - payload = { - 'data': json.dumps(data), - 'key': self.apikey - } return payload |