66 lines
2.2 KiB
Clojure
66 lines
2.2 KiB
Clojure
(ns com.biffweb.my-project.middleware
|
|
(:require
|
|
[camel-snake-kebab.core :as csk]
|
|
[clojure.pprint :as pp]
|
|
[clojure.string :as str]
|
|
[com.biffweb :as biff]
|
|
[muuntaja.middleware :as muuntaja]
|
|
[ring.middleware.anti-forgery :as csrf]
|
|
[ring.middleware.defaults :as rd]))
|
|
|
|
(defn wrap-clean-up-param-vals [handler]
|
|
(fn [req]
|
|
(pp/pprint (req :params))
|
|
(let [unknown-params (-> req
|
|
:params
|
|
(dissoc :__anti-forgery-token :game-code :players)
|
|
(update-vals csk/->kebab-case-keyword))
|
|
req (-> req
|
|
(update-in [:path-params :code] #(when % (str/lower-case %)))
|
|
(update :params merge unknown-params))]
|
|
(handler req))))
|
|
|
|
;; Stick this function somewhere in your middleware stack below if you want to
|
|
;; inspect what things look like before/after certain middleware fns run.
|
|
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
|
|
(defn wrap-debug [handler]
|
|
(fn [ctx]
|
|
(let [response (handler ctx)]
|
|
(println "REQUEST")
|
|
(biff/pprint ctx)
|
|
#_{:clj-kondo/ignore [:inline-def :clojure-lsp/unused-public-var]}
|
|
(def ctx* ctx)
|
|
(println "RESPONSE")
|
|
(biff/pprint response)
|
|
#_{:clj-kondo/ignore [:inline-def :clojure-lsp/unused-public-var]}
|
|
(def response* response)
|
|
response)))
|
|
|
|
(defn wrap-site-defaults [handler]
|
|
(-> handler
|
|
biff/wrap-render-rum
|
|
biff/wrap-anti-forgery-websockets
|
|
csrf/wrap-anti-forgery
|
|
biff/wrap-session
|
|
muuntaja/wrap-params
|
|
muuntaja/wrap-format
|
|
(rd/wrap-defaults (-> rd/site-defaults
|
|
(assoc-in [:security :anti-forgery] false)
|
|
(assoc-in [:responses :absolute-redirects] true)
|
|
(assoc :session false)
|
|
(assoc :static false)))))
|
|
|
|
(defn wrap-api-defaults [handler]
|
|
(-> handler
|
|
muuntaja/wrap-params
|
|
muuntaja/wrap-format
|
|
(rd/wrap-defaults rd/api-defaults)))
|
|
|
|
(defn wrap-base-defaults [handler]
|
|
(-> handler
|
|
biff/wrap-https-scheme
|
|
biff/wrap-resource
|
|
biff/wrap-internal-error
|
|
biff/wrap-ssl
|
|
;; biff/wrap-log-requests
|
|
))
|