| ;; 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))))) |