Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Content negotiation library for Clojure.

branch: master
README
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"]
Something went wrong with that request. Please try again.