-
-
Notifications
You must be signed in to change notification settings - Fork 13
/
request_params.clj
41 lines (37 loc) · 1.34 KB
/
request_params.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
37
38
39
40
41
(ns pedestal-api.request-params
(:require [io.pedestal.http.body-params :as pedestal]
[io.pedestal.interceptor :as i]
[route-swagger.doc :as sw.doc]
[ring.middleware.multipart-params :as multipart-params]
[clojure.walk :as walk]
[clojure.set :as set]
[linked.core :as linked]))
(defn- merge-empty-params [request]
(merge-with merge
request
{:body-params {}
:form-params {}
:query-params {}
:path-params {}
:headers {}}))
(defn- normalise-params [request]
(-> request
(set/rename-keys {:edn-params :body-params
:json-params :body-params
:transit-params :body-params
:multipart-params :form-params})
(update :form-params walk/keywordize-keys)
merge-empty-params))
(def common-body
(i/interceptor
{:name ::common-body
:enter (fn [context]
(update context :request normalise-params))}))
(defn body-params [& args]
(sw.doc/annotate
{:consumes ["application/json"
"application/edn"
"application/x-www-form-urlencoded"
"application/transit+json"
"application/transit+msgpack"]}
(apply pedestal/body-params args)))