From 0ed47fc7ce9668fc5af1705066cfe685559e98e3 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 19 Jul 2022 07:39:01 -0700 Subject: [PATCH] fix query for non-http schemes. Set null for empty fields --- jc/parsers/url.py | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/jc/parsers/url.py b/jc/parsers/url.py index f81a209e..51450dd9 100644 --- a/jc/parsers/url.py +++ b/jc/parsers/url.py @@ -21,8 +21,17 @@ Schema: Examples: - $ echo "http://example.com/test/path?q1=foo&q2=bar#frag" | jc --url -p - [] + % echo "http://example.com/test/path?q1=foo&q2=bar#frag" | jc --url -p + { + "scheme": "http", + "netloc": "example.com", + "path": "/test/path", + "query": { + "q1": "foo", + "q2": "bar" + }, + "fragment": "frag" + } $ FTP example, etc. [] @@ -84,19 +93,23 @@ def parse( if jc.utils.has_data(data): parts = urlparse(data) - query_list = parts.query.split('&') - query: Dict = {} + query = {} + query_list = [] - for q in query_list: - k, v = q.split('=') - query.update({k: v}) + if parts.query: + query_list = parts.query.split('&') + + if query_list: + for q in query_list: + k, v = q.split('=') + query.update({k: v}) raw_output = { - 'scheme': parts.scheme, - 'netloc': parts.netloc, - 'path': parts.path, - 'query': query, - 'fragment': parts.fragment + 'scheme': parts.scheme or None, + 'netloc': parts.netloc or None, + 'path': parts.path or None, + 'query': query or None, + 'fragment': parts.fragment or None } return raw_output if raw else _process(raw_output)