|
35 | 35 | If a name appears more than once (like `set-cookie`) then the value |
36 | 36 | will be a vector containing the values in the order they appeared |
37 | 37 | in the headers." |
38 | | - [#^HeaderIterator headers] |
39 | | - (->> (iterator-seq headers) |
40 | | - (map (fn [#^Header h] [(.toLowerCase (.getName h)) (.getValue h)])) |
41 | | - (group-by first) |
42 | | - (map (fn [[name headers]] |
43 | | - (let [values (map second headers)] |
44 | | - [name (let [[value & tail] values] |
45 | | - (if tail values value))]))) |
46 | | - (into {}))) |
| 38 | + ([#^HeaderIterator headers] |
| 39 | + (parse-headers headers #(.toLowerCase %))) |
| 40 | + ([#^HeaderIterator headers name-transform] |
| 41 | + (->> (iterator-seq headers) |
| 42 | + (map (fn [#^Header h] [(name-transform (.getName h)) (.getValue h)])) |
| 43 | + (group-by first) |
| 44 | + (map (fn [[name headers]] |
| 45 | + (let [values (map second headers)] |
| 46 | + [name (let [[value & tail] values] |
| 47 | + (if tail values value))]))) |
| 48 | + (into {})))) |
47 | 49 |
|
48 | 50 | (defn set-client-param [#^HttpClient client key val] |
49 | 51 | (when-not (nil? val) |
|
202 | 204 | [{:keys [request-method scheme server-name server-port uri query-string |
203 | 205 | headers body multipart debug debug-body socket-timeout conn-timeout |
204 | 206 | save-request? proxy-host proxy-port as cookie-store retry-handler |
205 | | - response-interceptor digest-auth connection-manager client-params] |
| 207 | + response-interceptor digest-auth connection-manager client-params |
| 208 | + raw-headers] |
206 | 209 | :as req}] |
207 | 210 | (let [^ClientConnectionManager conn-mgr |
208 | 211 | (or connection-manager |
|
270 | 273 | (try |
271 | 274 | (let [http-resp (.execute http-client http-req) |
272 | 275 | http-entity (.getEntity http-resp) |
273 | | - resp {:status (.getStatusCode (.getStatusLine http-resp)) |
274 | | - :headers (parse-headers (.headerIterator http-resp)) |
275 | | - :body (coerce-body-entity req http-entity conn-mgr)}] |
| 276 | + resp (merge {:status (.getStatusCode (.getStatusLine http-resp)) |
| 277 | + :headers (parse-headers (.headerIterator http-resp)) |
| 278 | + :body (coerce-body-entity req http-entity conn-mgr)} |
| 279 | + (if raw-headers {:raw-headers (parse-headers (.headerIterator http-resp) identity)}))] |
276 | 280 | (if save-request? |
277 | 281 | (-> resp |
278 | 282 | (assoc :request req) |
|
0 commit comments