blob: 0395457476281c2b1f5702930d14014572194e46 (
plain)
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
42
43
44
45
46
47
48
49
50
51
52
53
|
(ns mulk.benki.main
(:refer-clojure)
(:use [clojure core repl pprint]
noir.core
[hiccup core page-helpers]
[mulk.benki util config])
(:require [noir server options]
[mulk.benki wiki auth]
[ring.middleware.file]
[noir.session :as session]))
(defn wrap-utf-8 [handler]
(fn [request]
(let [response (handler request)
ctype (get-in response [:headers "Content-Type"])
utf8ctype (str ctype "; charset=utf-8")]
(if (and ctype
(re-matches #"^(text/html|text/plain|application/xhtml+xml|text/xml)$" ctype))
(assoc-in response [:headers "Content-Type"] utf8ctype)
response))))
(defn wrap-base-uri [handler]
(fn [request]
(let [base-uri (:base-uri @benki-config)]
(hiccup.core/with-base-url base-uri
((noir.options/wrap-options handler {:base-url base-uri}) request)))))
(defn wrap-cache-control [handler]
(fn [request]
(let [response (handler request)]
(if (get-in response [:headers "Cache-Control"])
response
(assoc-in response [:headers "Cache-Control"] "must-revalidate")
;;or: no-cache or: no-store
;;Which one is the most appropriate?
))))
(do-once ::init
(noir.server/add-middleware #(wrap-utf-8 %))
(noir.server/add-middleware #(wrap-base-uri %))
(noir.server/add-middleware #(wrap-cache-control %))
(noir.server/add-middleware #(ring.middleware.file/wrap-file % "static")))
(defonce server (doto (Thread. #(noir.server/start (:web-port @benki-config)))
(.setDaemon true)
(.start)))
(defn -main [& args]
(loop []
(Thread/sleep 1000000)
(recur)))
|