summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Wójcik <wojcikstefan@gmail.com>2016-05-02 07:16:37 -0700
committerStefan Wójcik <wojcikstefan@gmail.com>2016-05-02 07:16:37 -0700
commit3cb332e6da1cd57de9035877728c3ebae533926c (patch)
tree24d4cca9ae2404fa053c0083274bee898af78fda
parentc1e94e242ed3a499df7bc463aee239218629931e (diff)
parent64a64e32ab8c14e91a6a196cf0a2dd7637d4f3a7 (diff)
downloadpython-mimeparse-3cb332e6da1cd57de9035877728c3ebae533926c.tar.gz
Merge pull request #16 from scop/q1.5.2
q value handling improvements
-rw-r--r--mimeparse.py7
-rw-r--r--testdata.json3
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"}]]
],