Skip to content

Batch request doesn't work as expected #37

Description

@sirio81

In the following example I try to run a batch request to get 3 folders for the same account.
Please try to indent and read the output of get_fault_message().
You'll notice that the request syntax is wrong!
The problem shows up adding 3 or more batch requests.

Script:

admin_token = auth.authenticate(
    url,
    admin_name,
    admin_password,
    admin_auth=True,
    use_password=True
)

request = comm.gen_request(token=admin_token)

request.add_request(
    'DelegateAuthRequest',
    {
        'account': {
            'by': 'name',
            '_content': 'user@domain.tld'
        }
    },
    'urn:zimbraAdmin'
)

response = comm.send_request(request)
new_token = response.get_response()['DelegateAuthResponse']['authToken']['_content']

request = comm.gen_request(token=new_token, set_batch=True)

request_inbox_id = request.add_request(
    'GetFolderRequest',
    {
        'folder': {'path': '/Inbox'},
    },
    'urn:zimbraMail'
)

request_sent_id = request.add_request(
    'GetFolderRequest',
    {
        'folder': {'path': '/Sent'},
    },
    'urn:zimbraMail'
)

request_trash_id = request.add_request(
    'GetFolderRequest',
    {
        'folder': {'path': '/Trash'},
    },
    'urn:zimbraMail'
)

response = comm.send_request(request)

print('request id(s):', request_inbox_id, request_sent_id, request_trash_id)
print(response.is_fault())
print(response.get_fault_code())
print(response.get_fault_message())

Output:

request id(s): 1 2 3 True service.PARSE_ERROR parse error: expected character: { found:[: {"Header": {"context": {"_jsns": "urn:zimbra", "format": {"type": "js"}, "authToken": {"_content": "REMOVED"}}}, "Body": {"BatchRequest": {"_jsns": "urn:zimbra", "onerror": null, "GetFolderRequest": [[{"folder": {"path": "/Inbox"}, "_jsns": "urn:zimbraMail", "requestId": 1}, {"folder": {"path": "/Sent"}, "_jsns": "urn:zimbraMail", "requestId": 2}], {"folder": {"path": "/Trash"}, "_jsns": "urn:zimbraMail", "requestId": 3}]}}}

Is my code correct?
If so, could you please fix this issue?

Thank you.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions