A bit more robust if things are badly wrong.

This commit is contained in:
Simon Brooke 2017-09-11 12:08:15 +01:00
parent f53fcdb451
commit 47396aa261
2 changed files with 15 additions and 7 deletions

View file

@ -82,7 +82,8 @@
:Q-VALUE (read-string (second parse-tree)) :Q-VALUE (read-string (second parse-tree))
;; default ;; default
(let [formatted-tree (with-out-str (pprint parse-tree))] (let [formatted-tree (with-out-str (pprint parse-tree))]
(throw (Exception. (str "Unexpected parse tree: " formatted-tree))))))) (timbre/error "Unable to parse header.")
nil))))
(defn acceptable-languages (defn acceptable-languages
@ -94,11 +95,14 @@
of preference." of preference."
{:doc/format :markdown} {:doc/format :markdown}
[accept-language-header] [accept-language-header]
(reverse (let [parse-tree (parse-accept-language-header accept-language-header)]
(sort-by (if (vector? parse-tree)
:preference (reverse
(generate-accept-languages (sort-by
(parse-accept-language-header accept-language-header))))) :preference
(generate-accept-languages
parse-tree)))
(timbre/error "Failed to parse Accept-Language header '" accept-language-header "':\n" (str parse-tree)))))
(defn slurp-resource (defn slurp-resource

View file

@ -181,7 +181,11 @@
[:SPECIFIERS [:SPECIFIERS
[:SPECIFIER [:LANGUAGE-TAG [:PRIMARY-TAG "fr"]]]]]] [:SPECIFIER [:LANGUAGE-TAG [:PRIMARY-TAG "fr"]]]]]]
(parse-accept-language-header "en, fr")) (parse-accept-language-header "en, fr"))
"Space after comma should be tolerated."))) "Space after comma should be tolerated.")
(is (vector? (parse-accept-language-header "en, fr"))
"If the header is valid, we should get a (parse tree) vector")
(is (not (vector? (parse-accept-language-header "")))
"If the header is invalid, we should get a failure object not a vector")))
(deftest test-ordering (deftest test-ordering