score-the-pigs/src/com/biffweb/my_project/middleware.clj

67 lines
2.2 KiB
Clojure
Raw Normal View History

2025-03-11 23:42:37 +00:00
(ns com.biffweb.my-project.middleware
2025-03-14 18:55:18 +00:00
(: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]))
2025-03-11 23:42:37 +00:00
2025-03-14 18:55:18 +00:00
(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))))
2025-03-12 19:54:45 +00:00
2025-03-11 23:42:37 +00:00
;; 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
2025-03-12 19:54:45 +00:00
;; biff/wrap-log-requests
))