/
utils.clj
32 lines (28 loc) · 1.15 KB
/
utils.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
(ns lupapiste-commons.ring.utils
(:require [clojure.string :as s]
[taoensso.timbre :as timbre]))
(defn wrap-exception-logging [handler]
(fn [request]
(try
(handler request)
(catch Throwable t
(timbre/warn t (str "Error while prosessing request: " request))
{:status 500
:body "Error while prosessing request"}))))
(defn wrap-request-logging [handler]
(fn [{:keys [remote-addr request-method uri headers] :as request}]
(let [start (System/currentTimeMillis)
{:keys [status] :as response} (handler request)
end (System/currentTimeMillis)]
(timbre/info (s/join " " [remote-addr (s/upper-case (name request-method)) uri status (- end start) (get headers "user-agent" "")]))
response)))
(defn optional-middleware [current-middleware middleware pred]
(if pred
(middleware current-middleware)
current-middleware))
(defn wrap-no-ajax-cache [handler]
(fn [request]
(let [response (handler request)]
(if (-> request :headers ^String (get "x-requested-with" "") (.contains "XMLHttpRequest"))
(assoc-in response [:headers "Expires"] "0")
response))))