Permalink
Browse files

Multiple header support in ring.util.servlet

  • Loading branch information...
1 parent ef089b9 commit 7d902196afbae6c9c6c2864d58484ce77007152a @weavejester weavejester committed Jun 26, 2011
Showing with 10 additions and 5 deletions.
  1. +5 −2 ring-servlet/src/ring/util/servlet.clj
  2. +5 −3 ring-servlet/test/ring/util/servlet_test.clj
View
7 ring-servlet/src/ring/util/servlet.clj
@@ -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))))
View
8 ring-servlet/test/ring/util/servlet_test.clj
@@ -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

Please sign in to comment.