/
core.clj
36 lines (32 loc) · 1.13 KB
/
core.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
(ns atmos-kernel.web.core
(:require [atmos-kernel.core :refer [keyword-map]]
[ring.util.response :refer [response]]
[ring.middleware.json :refer [wrap-json-response wrap-json-body]]
[ring.middleware.cors :refer [wrap-cors]]
[atmos-kernel.web.security.auth :refer [atmos-auth-backend]]
[buddy.auth.middleware :refer [wrap-authentication wrap-authorization]]))
(defn- wrap-cors-response
"Wrap routes in CORS"
[routes]
(wrap-cors routes
:access-control-allow-origin [#".*"]
:access-control-allow-methods [:get :put :post :delete]))
(defn request-body
"Get body of compojure request"
[request]
(let [body (:body request)] (keyword-map body)))
(defn atmos-response
"Create a ring response"
[data]
(response data))
(defn json-web-app
"Create a json web application"
([routes]
(json-web-app routes nil))
([routes auth-backend]
(-> routes
(wrap-authentication (atmos-auth-backend auth-backend))
(wrap-authorization (atmos-auth-backend auth-backend))
wrap-cors-response
wrap-json-response
wrap-json-body)))