Permalink
Browse files
Multiple header support in ring.util.servlet
- Loading branch information...
|
|
@@ -1,6 +1,7 @@ |
|
|
(ns ring.util.servlet
|
|
|
"Compatibility functions for turning a ring handler into a Java servlet."
|
|
|
- (:require [clojure.java.io :as io])
|
|
|
+ (:require [clojure.java.io :as io]
|
|
|
+ [clojure.string :as string])
|
|
|
(:import (java.io File InputStream FileInputStream)
|
|
|
(javax.servlet.http HttpServlet
|
|
|
HttpServletRequest
|
|
|
@@ -13,7 +14,9 @@ |
|
|
(fn [headers, ^String name]
|
|
|
(assoc headers
|
|
|
(.toLowerCase name)
|
|
|
- (.getHeader request name)))
|
|
|
+ (->> (.getHeaders request name)
|
|
|
+ (enumeration-seq)
|
|
|
+ (string/join ","))))
|
|
|
{}
|
|
|
(enumeration-seq (.getHeaderNames request))))
|
|
|
|
|
|
|
|
|
@@ -18,7 +18,7 @@ |
|
|
(getScheme [] (name (request :scheme)))
|
|
|
(getMethod [] (-> request :request-method name .toUpperCase))
|
|
|
(getHeaderNames [] (enumeration (keys (request :headers))))
|
|
|
- (getHeader [name] (get-in request [:headers name]))
|
|
|
+ (getHeaders [name] (enumeration (get-in request [:headers name])))
|
|
|
(getContentType [] (request :content-type))
|
|
|
(getContentLength [] (or (request :content-length) -1))
|
|
|
(getCharacterEncoding [] (request :character-encoding))
|
|
|
@@ -54,7 +54,8 @@ |
|
|
:query-string "a=b"
|
|
|
:scheme :http
|
|
|
:request-method :get
|
|
|
- :headers {"X-Client" "Foo"}
|
|
|
+ :headers {"X-Client" ["Foo", "Bar"]
|
|
|
+ "X-Server" ["Baz"]}
|
|
|
:content-type "text/plain"
|
|
|
:content-length 10
|
|
|
:character-encoding "UTF-8"
|
|
|
@@ -70,7 +71,8 @@ |
|
|
:query-string "a=b"
|
|
|
:scheme :http
|
|
|
:request-method :get
|
|
|
- :headers {"x-client" "Foo"}
|
|
|
+ :headers {"x-client" "Foo,Bar"
|
|
|
+ "x-server" "Baz"}
|
|
|
:content-type "text/plain"
|
|
|
:content-length 10
|
|
|
:character-encoding "UTF-8"
|
|
|
|
0 comments on commit
7d90219