forked from rnewman/clj-conneg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
41 lines (30 loc) · 1.1 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
A basic content negotiation library for Clojure.
The primary interface function is
com.twinql.clojure.conneg/best-allowed-content-type
which attempts to return the single best concrete type (e.g., if they specify
image/jpeg and you allow image/*, it'll return image/jpeg, *and vice versa*).
You might also be interested in `sorted-accept` (at a lower level).
Usage:
(require ['com.twinql.clojure.conneg :as 'conneg])
(conneg/best-allowed-content-type
"image/*; q=0.5, text/html, text/plain; q=0.8"
#{"text/*"})
=>
("text" "html")
(conneg/best-allowed-content-type
"image/*; q=0.5, text/html, text/plain; q=0.8")
=>
("text" "html")
(conneg/best-allowed-content-type
"image/*; q=0.9, text/html; q=0.1, text/plain; q=0.8"
#{["image" "jpeg"]})
=>
("image" "jpeg")
;; Get your accept header from your web framework,
;; and filter by which types you can produce:
(let [accept-header (:accept headers)]
(conneg/best-allowed-content-type
accept-header
#{"text/html" "text/*"}))
=>
["text" "plain"]