summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Wójcik <wojcikstefan@gmail.com>2016-10-16 18:53:21 -0400
committerGitHub <noreply@github.com>2016-10-16 18:53:21 -0400
commit99d9699e19c77b477ef475f312be4c99d8270620 (patch)
treeccb27ae0cd37dbb1692dc595aa6a01ce3b069c0c
parentd87c40f7116c2f3ba0538d5eee465c2eec63c3f6 (diff)
downloadpython-mimeparse-99d9699e19c77b477ef475f312be4c99d8270620.tar.gz
let acceptable types specify their quality (#26)
-rw-r--r--mimeparse.py3
-rw-r--r--testdata.json16
2 files changed, 19 insertions, 0 deletions
diff --git a/mimeparse.py b/mimeparse.py
index 7794341..ae942fa 100644
--- a/mimeparse.py
+++ b/mimeparse.py
@@ -110,6 +110,9 @@ def quality_and_fitness_parsed(mime_type, parsed_ranges):
])
fitness += param_matches
+ # finally, add the target's "q" param (between 0 and 1)
+ fitness += float(target_params.get('q', 1))
+
if fitness > best_fitness:
best_fitness = fitness
best_fit_q = params['q']
diff --git a/testdata.json b/testdata.json
index 64785c4..2ceee39 100644
--- a/testdata.json
+++ b/testdata.json
@@ -188,6 +188,22 @@
],
[
[
+ ["application/json;q=1.0", "text/html;q=0.9", "text/plain;q=0.1"],
+ "*/*"
+ ],
+ "application/json;q=1.0",
+ "*/* match should pick an acceptable type with the highest quality"
+ ],
+ [
+ [
+ ["text/html;q=0.9", "application/json", "text/plain;q=0.1"],
+ "*/*"
+ ],
+ "application/json",
+ "*/* match should pick an acceptable type with the highest quality, even if it's implicit"
+ ],
+ [
+ [
["application/json", "text/html"],
"text"
],