io.pedestal.interceptor.helpers

after

(after f)(after f & args)
Return an interceptor which calls `f` on context during the leave
stage.

around

(around f1 f2)(around n f1 f2)
Return an interceptor which calls `f1` on context during the enter
stage, and calls `f2` on context during the leave stage.

before

(before f)(before f & args)
Returns an interceptor which calls `f` on context during the enter
stage.

defafter

macro

(defafter macro-name__10922__auto__ & args__10923__auto__)
Defines an after interceptor. The defined function is processed
during the leave stage of interceptor execution. The implicitly
created function will operate on context, and return a value used as
the new context, e.g.:

(defafter check-zotted
  [context]
  (if-not (:zotted context)
    (throw (ex-info "Context was not zotted!"
                    {:context context}))
    context))

defaround

macro

(defaround n & args)
Defines an around interceptor. The definition resembles a multiple
arity function definition, however both fns are 1-arity. The first
fn will be called during the enter stage, the second during the
leave stage, e.g.:

(defaround aroundinterceptor
  ([context] (assoc context :around :entering))
  ([context] (assoc context :around :leaving)))

defbefore

macro

(defbefore macro-name__10922__auto__ & args__10923__auto__)
Defines a before interceptor. The
defined function performs processing during interceptor execution
during the enter stage. The implicitly created function will operate
on context, and return a value used as the new context, e.g.:

(defbefore flag-zotted
  [context]
  (assoc context :zotted true))

defhandler

macro

(defhandler macro-name__10922__auto__ & args__10923__auto__)
Defines a handler interceptor. The definition mirrors a ring-style
request handler and is made in terms of a ring style request. The
implicitly created interceptor will extract the request from the
context it receives, pass it to the defined function, and then
associate the return value from the defined function as into
context with the :response key and return context, e.g.:

(defhandler hello-name
  [request]
  (ring.util.response/response
    (str "Hello, " (-> request
                         :params
                         :name))))

This is equivalent to:

(defbefore hello-name
  [context]
  (let [request (:request context)
        response (ring.util.response/response
                   (str "Hello, " (-> request
                                        :params
                                        :name)))]
    (assoc context :response response)))

definterceptor

macro

(definterceptor name & body)
Define an instance of an interceptor and store it in a var. An
optional doc string can be provided.
The body can be anything that satisfies the IntoInterceptor protocol.

usage:
  (definterceptor encode-response
     "An interceptor that encodes the response as json"
     (on-response encode-json))

Alternatively, you may also:
  (def encode-response
    "An interceptor that encodes the response as json"
    (on-response encode-json)

defmiddleware

macro

(defmiddleware n & args)
Defines a middleware interceptor. The definition resembles a
multiple arity function definition, however both fns are
1-arity. The first fn will be called during the enter stage with the
value of the :request key in the context, the second during the
leave stage with the response key in the context, e.g.:

(defmiddleware middleware-interceptor
  ([request] (assoc request :middleware :on-request))
  ([response] (assoc response :middleware :on-response)))

defon-request

macro

(defon-request macro-name__10922__auto__ & args__10923__auto__)
Defines an on-request interceptor. The definition performs
pre-processing on a request during the enter stage of interceptor
execution. The implicitly created interceptor will extract the
request from the context it receives, pass it to the defined
function, and then associate the return value from the defined
function as into context with the :request key and return
context, e.g.:

(defon-request parse-body-as-wibblefish
  [request]
  (assoc request :wibblefish-params
         (wibblefish-parse (:body request))))

This is equivalent to:

(defbefore parse-body-as-wibblefish
  [context]
  (let [request (:request context)
        new-request (assoc request :wibblefish-params
                           (wibblefish-parse (:body request)))]
    (assoc context :request new-request)))

defon-response

macro

(defon-response macro-name__10922__auto__ & args__10923__auto__)
Defines an on-response interceptor. The definition performs post
processing on a response during the leave stage of interceptor
execution. The implicitly created interceptor will extract the
response from the context it receives, pass it to the defined
function, and then associate the return value from the defined function
into context with the :response key and return context, e.g.:

(defon-response change-body-to-html
  [response]
  (assoc response :body
         (render-to-html (:body response))))

This is equivalent to:

(defafter change-body-to-html
  [context]
  (let [response (:response context)
        new-response (assoc response :body
                            (render-to-html (:body response)))]
    (assoc context :response new-response)))

handler

(handler f)(handler n f)
Returns an interceptor which calls f on the :request value of
context, and assoc's the return value as :response into context during the
enter stage.

infer-rest-interceptor-function

(infer-rest-interceptor-function args)
Given list `args`, return the rest of args that would remain after
removing the elements of args that specify the form returned by
infer-first-interceptor-function.

middleware

(middleware f1 f2)(middleware n f1 f2)
Returns an interceptor which calls `f1` on the :request value of
context during the enter stage, and `f2` on the :response value of
context during the leave stage.

on-request

(on-request f)(on-request f & args)
Returns an interceptor which updates the :request value of context
with f during the enter stage.

on-response

(on-response f)(on-response f & args)
Returns an interceptor which updates the :response value of context
with f during the leave stage.