A Clojure library designed to extend usual pedestal api setup, providing:
[org.clojars.majorcluster/pedestal-api-helper "0.3.0"]
(:require [clj.pedestal-api-helper.interceptors :as api-h.i]
[...])
(def common-interceptors
[(p.body-params/body-params)
api-h.i/json-out])
(def all-routes
(route/expand-routes
#{["/status" :get (conj common-interceptors `r.status/get-status) :route-name :get-all-status]}))
(:require [clj.pedestal-api-helper.params-helper :as api-h.params]
[...])
(defn post-status
[request]
(try
(let [crude-body (:json-params request)
mandatory-fields ["name"]
allowed-fields ["name"]
body (api-h.params/validate-and-mop!! crude-body mandatory-fields allowed-fields)]
(...))
(catch ExceptionInfo e
{:status 400, :headers common-headers, :body {:message
(:validation-messages (.getData e))}})
))
(defn patch-status
[request]
(try
(let [crude-body (:json-params request)
mandatory-fields ["id","name"]
allowed-fields ["id","name"]
body (api-h.params/validate-and-mop!! crude-body mandatory-fields allowed-fields)]
{:status 204})
(catch ExceptionInfo e
{:status 400, :headers common-headers, :body {:message
(:validation-messages (.getData e))}})
))
export GPG_TTY=$(tty) && lein deploy clojars
Symbols | Description |
---|---|
json-out | Map having :leave as fn[context] and rewriting response body from map into json |
Symbols | Description |
---|---|
uuid-pattern | UUID string regex |
Functions | Description |
---|---|
uuid | returns a new random UUID (uuid) => 53bd29d3-9b41-4550-83cc-f970d49da04d |
uuid-as-string [uuid] | converts uuid into a string (uuid-as-string (uuid)) => "53bd29d3-9b41-4550-83cc-f970d49da04d" |
is-uuid [id] | if id param is a string, checks if it matches uuid regex, otherwise returns false (is-uuid "53bd29d3-9b41-4550-83cc-f970d49da04d") => true |
validate-mandatory [body fields & message-untranslated = "Field %s is not present"] | checks if body map has mandatory keys, if not, throws an exception containing all missing fields in ExceptionInfo .getData :validation-messages (validate-mandatory {:name "Rosa"} ["name"]) => true (validate-mandatory {} ["name"]) => ExceptionInfo thrown |
extract-field-value [field body] | gets value from the body using field ks, converting uuid's from string to UUID if needed (extract-field-value :name {:name "Rosa"}) => "Rosa" (extract-field-value :id {:id "53bd29d3-9b41-4550-83cc-f970d49da04d"}) => #uuid "53bd29d3-9b41-4550-83cc-f970d49da04d" |
mop-fields [body fields] | Clean the body removing values not present in fields param (mop-fields {:name "Rosa" :age 41} ["name"]) => {:name "Rosa"} |
validate-and-mop!! [body mandatory accepted] | Validates and clean body by executing validate-mandatory and mop-fields |
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close