diff options
author | Stefan Wójcik <wojcikstefan@gmail.com> | 2016-05-02 07:16:37 -0700 |
---|---|---|
committer | Stefan Wójcik <wojcikstefan@gmail.com> | 2016-05-02 07:16:37 -0700 |
commit | 3cb332e6da1cd57de9035877728c3ebae533926c (patch) | |
tree | 24d4cca9ae2404fa053c0083274bee898af78fda | |
parent | c1e94e242ed3a499df7bc463aee239218629931e (diff) | |
parent | 64a64e32ab8c14e91a6a196cf0a2dd7637d4f3a7 (diff) | |
download | python-mimeparse-3cb332e6da1cd57de9035877728c3ebae533926c.tar.gz |
Merge pull request #16 from scop/q1.5.2
q value handling improvements
-rw-r--r-- | mimeparse.py | 7 | ||||
-rw-r--r-- | testdata.json | 3 |
2 files changed, 8 insertions, 2 deletions
diff --git a/mimeparse.py b/mimeparse.py index 2884b1d..91b28b8 100644 --- a/mimeparse.py +++ b/mimeparse.py @@ -72,8 +72,11 @@ def parse_media_range(range): necessary. """ (type, subtype, params) = parse_mime_type(range) - if 'q' not in params or not params['q'] or \ - float(params['q']) > 1 or float(params['q']) < 0: + params.setdefault('q', params.pop('Q', None)) # q is case insensitive + try: + if not params['q'] or not 0 <= float(params['q']) <= 1: + params['q'] = '1' + except ValueError: # from float() params['q'] = '1' return (type, subtype, params) diff --git a/testdata.json b/testdata.json index 409ab72..4f0a648 100644 --- a/testdata.json +++ b/testdata.json @@ -4,9 +4,12 @@ ["application/xml", ["application", "xml", {"q": "1"}]], ["application/xml;q=",["application", "xml", {"q": "1"}]], ["application/xml ;q=",["application", "xml", {"q": "1"}]], + ["application/xml ;q=-1",["application", "xml", {"q": "1"}]], ["application/xml ; q=1;b=other",["application", "xml", {"q": "1", "b":"other"}]], ["application/xml ; q=2;b=other",["application", "xml", {"q": "1", "b":"other"}]], ["application/xml ; q=0",["application", "xml", {"q": "0"}]], + ["application/xml ; q=foo", ["application", "xml", {"q": "1"}]], + ["application/xml ; Q=0.6", ["application", "xml", {"q": "0.6"}]], [" *; q=.2",["*", "*", {"q": ".2"}]] ], |