MalformedQueryStringError string when empty parameter without =
querystring_parser version="1.2.3" Python 3.7.2
Problem
If query string containg "empty" parameter whithout equal sign at the end - parser fails with MalformedQueryStringError exception.
Example
amoCRM webhook post data:
leads%5Bupdate%5D%5B0%5D%5Bid%5D=25628254&leads%5Bupdate%5D%5B0%5D%5Bname%5D=&leads%5Bupdate%5D%5B0%5D%5Bstatus_id%5D=11458102&leads%5Bupdate%5D%5B0%5D%5Bold_status_id%5D&leads%5Bupdate%5D%5B0%5D%5Bprice%5D=0&leads%5Bupdate%5D%5B0%5D%5Bresponsible_user_id%5D=1085823&leads%5Bupdate%5D%5B0%5D%5Blast_modified%5D=1563362310&leads%5Bupdate%5D%5B0%5D%5Bmodified_user_id%5D=1085823&leads%5Bupdate%5D%5B0%5D%5Bcreated_user_id%5D=1085823&leads%5Bupdate%5D%5B0%5D%5Bdate_create%5D=1563362308&leads%5Bupdate%5D%5B0%5D%5Bpipeline_id%5D=222958&leads%5Bupdate%5D%5B0%5D%5Baccount_id%5D=11458096&account%5Bsubdomain%5D=afidevelopment&account%5Bid%5D=11458096&account%5B_links%5D%5Bself%5D=https%3A%2F%2Fexample.amocrm.ru
Expected parser result:
{'leads': {'update': {0: {'id': '25628254', 'name': '', 'status_id': '11458102', 'old_status_id': None, 'price': '0', 'responsible_user_id': '1085823', 'last_modified': '1563362310', 'modified_user_id': '1085823', 'created_user_id': '1085823', 'date_create': '1563362308', 'pipeline_id': '222958', 'account_id': '11458096'}}}, 'account': {'subdomain': 'afidevelopment', 'id': '11458096', '_links': {'self': 'https://example.amocrm.ru'}}}
Got exception
` Traceback (most recent call last): File "/opt/afi/server/.venv/lib/python3.7/site-packages/querystring_parser/parser.py", line 137, in parse (var, val) = element.split("=") ValueError: not enough values to unpack (expected 2, got 1)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "
`
The code:
from querystring_parser import parser parser.parse('leads%5Bupdate%5D%5B0%5D%5Bid%5D=25628254&leads%5Bupdate%5D%5B0%5D%5Bname%5D=&leads%5Bupdate%5D%5B0%5D%5Bstatus_id%5D=11458102&leads%5Bupdate%5D%5B0%5D%5Bold_status_id%5D&leads%5Bupdate%5D%5B0%5D%5Bprice%5D=0&leads%5Bupdate%5D%5B0%5D%5Bresponsible_user_id%5D=1085823&leads%5Bupdate%5D%5B0%5D%5Blast_modified%5D=1563362310&leads%5Bupdate%5D%5B0%5D%5Bmodified_user_id%5D=1085823&leads%5Bupdate%5D%5B0%5D%5Bcreated_user_id%5D=1085823&leads%5Bupdate%5D%5B0%5D%5Bdate_create%5D=1563362308&leads%5Bupdate%5D%5B0%5D%5Bpipeline_id%5D=222958&leads%5Bupdate%5D%5B0%5D%5Baccount_id%5D=11458096&account%5Bsubdomain%5D=afidevelopment&account%5Bid%5D=11458096&account%5B_links%5D%5Bself%5D=https%3A%2F%2Fexample.amocrm.ru')
Hi! Thanks for the report. Would you like to make a pull request with a test and a fix?