|
;; Deze functie zet de data van de response map op het ServletResponse object |
|
(defn- set-response-values [http-response response] |
|
;; Loop over de headers |
|
(doseq [[header value] (response :headers)] |
|
(.setHeader http-response header value)) |
|
;; Set de response status |
|
(.setStatus http-response (response :status))) |
|
|
|
;; Deze functone zet een ServletRequest om in een request map |
|
:: Momenteel enkel de content van de request |
|
(defn- request-map [http-request] |
|
{:body (edn/read (PushbackReader. (.getReader http-request)))}) |
|
|
|
(defn servlet [handler] |
|
;; Maak een instantie van de abstracte HttpServlet class |
|
(proxy [HttpServlet] [] |
|
;; Implementeer (override) de service method |
|
(service [http-request http-response] |
|
;; Zet de request om in data |
|
(->> (request-map http-request) |
|
;; voer de handler functie uit met de data |
|
handler |
|
;; zet de response map op de ServletResponse |
|
(set-response-values http-response))))) |