25 lines
667 B
Clojure
25 lines
667 B
Clojure
(ns vending.middleware
|
|
(:require [taoensso.timbre :as timbre]
|
|
[selmer.parser :as parser]
|
|
[environ.core :refer [env]]))
|
|
|
|
(defn log-request [handler]
|
|
(if (env :dev)
|
|
(fn [req]
|
|
(timbre/debug req)
|
|
(handler req))
|
|
handler))
|
|
|
|
(defn template-error-page [handler]
|
|
(if (env :dev)
|
|
(fn [request]
|
|
(try
|
|
(handler request)
|
|
(catch clojure.lang.ExceptionInfo ex
|
|
(let [{:keys [type error-template] :as data} (ex-data ex)]
|
|
(if (= :selmer-validation-error type)
|
|
{:status 500
|
|
:body (parser/render error-template data)}
|
|
(throw ex))))))
|
|
handler))
|