File tree Expand file tree Collapse file tree 5 files changed +19
-18
lines changed Expand file tree Collapse file tree 5 files changed +19
-18
lines changed Original file line number Diff line number Diff line change 4
4
[aleph.flow :as flow]
5
5
[aleph.http.client :as client]
6
6
[aleph.http.client-middleware :as middleware]
7
+ [aleph.http.common :as common]
7
8
[aleph.http.file :as file]
8
9
[aleph.http.server :as server]
9
10
[aleph.http.websocket.client :as ws.client]
15
16
[manifold.deferred :as d]
16
17
[manifold.executor :as executor])
17
18
(:import
18
- (aleph.http.core
19
- HeaderMap)
20
19
(aleph.utils
21
20
ConnectionTimeoutException
22
21
PoolTimeoutException
502
501
(defn get-all
503
502
" Given a header map from an HTTP request or response, returns a collection of
504
503
values associated with the key, rather than a comma-delimited string."
505
- [^HeaderMap header-m ^String k]
506
- (let [raw-headers (.headers header-m)]
507
- (condp instance? raw-headers
508
- HttpHeaders (.getAll ^HttpHeaders raw-headers k)
509
- Headers (.getAll ^Headers raw-headers k)
510
- (throw (IllegalArgumentException. (str " Unknown headers type: " (class raw-headers)))))))
504
+ [header-m ^String k]
505
+ (common/get-header-values header-m k))
511
506
512
507
(defn wrap-ring-async-handler
513
508
" Converts given asynchronous Ring handler to Aleph-compliant handler.
Original file line number Diff line number Diff line change 2
2
" This middleware is adapted from clj-http, whose license is amenable to this sort of
3
3
copy/pastery"
4
4
(:require
5
+ [aleph.http.common :as common]
5
6
; ; leave this dependency to make sure that HeaderMap is already compiled
6
7
[aleph.http.core :as http]
7
8
[aleph.http.schema :as schema]
743
744
(parse-cookie cookie-spec)
744
745
(netty-cookie->cookie ))))
745
746
746
- ; ; we might want to use here http/get-all helper,
747
- ; ; but it would result in circular dependencies
748
747
(defn ^:no-doc extract-cookies-from-response-headers
749
748
([headers]
750
749
(extract-cookies-from-response-headers default-cookie-spec headers))
751
750
([cookie-spec ^HeaderMap header-m]
752
- (let [raw-headers (.headers header-m)]
753
- (->> (condp instance? raw-headers
754
- HttpHeaders (.getAll ^HttpHeaders raw-headers set-cookie-header-name)
755
- Headers (.getAll ^Headers raw-headers set-cookie-header-name)
756
- (throw (IllegalArgumentException. (str " Unknown headers type: " (class raw-headers)))))
757
- (map (partial decode-set-cookie-header cookie-spec))))))
751
+ (->> (common/get-header-values header-m set-cookie-header-name)
752
+ (map (partial decode-set-cookie-header cookie-spec)))))
758
753
759
754
(defn ^:no-doc handle-cookies [{:keys [cookie-store cookie-spec]
760
755
:or {cookie-spec default-cookie-spec }}
Original file line number Diff line number Diff line change 29
29
30
30
(def aleph-server-header " Aleph value for the Server header" (AsciiString. " Aleph/0.7.0-alpha1" ))
31
31
32
+ (defprotocol HeaderMap
33
+ (get-header-values [m ^String k]))
34
+
32
35
(defn coerce-element
33
36
" Turns an object into something writable to a Netty channel.
34
37
Original file line number Diff line number Diff line change 103
103
s')))
104
104
105
105
; ; About 10x faster than using Clojure maps, and handles more keys
106
+ ; ; Note that there's a copy of this in aleph.http.http2 because unfortunately, Netty uses a different class
107
+ ; ; for representing H2 headers (See https://github.com/netty/netty/issues/8528)
106
108
(def-map-type HeaderMap
107
109
[^HttpHeaders headers
108
110
added
145
147
default-value
146
148
(if (== 1 (.size vs))
147
149
(.toString (.get vs 0 ))
148
- (str/join " ," vs))))))))
150
+ (str/join " ," vs)))))))
151
+ common /HeaderMap
152
+ (get-header-values [_ k]
153
+ (.getAll headers ^String k)))
149
154
150
155
(defn headers->map
151
156
" Returns a map of Ring headers from a Netty HttpHeaders object."
Original file line number Diff line number Diff line change 423
423
default-value
424
424
(if (== 1 (.size vs))
425
425
(.toString (.get vs 0 ))
426
- (str/join " ," vs))))))))
426
+ (str/join " ," vs)))))))
427
+ common /HeaderMap
428
+ (get-header-values [_ k]
429
+ (.getAll headers ^String k)))
427
430
428
431
(defn headers->map
429
432
" Returns a map of Ring headers from a Netty Headers object.
You can’t perform that action at this time.
0 commit comments