From c3a3ca9f95184af355d7563dac1faf99d8c52d8c Mon Sep 17 00:00:00 2001 From: Joel Kaasinen Date: Mon, 6 Mar 2023 10:36:52 +0200 Subject: [PATCH] feat: change syntax for :request parameter coercion default schema use :request :body instead of :request :content :default for symmetry with :response --- modules/reitit-core/src/reitit/coercion.cljc | 11 ++++++----- test/cljc/reitit/ring_coercion_test.cljc | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/modules/reitit-core/src/reitit/coercion.cljc b/modules/reitit-core/src/reitit/coercion.cljc index b91a1237..f6075ae9 100644 --- a/modules/reitit-core/src/reitit/coercion.cljc +++ b/modules/reitit-core/src/reitit/coercion.cljc @@ -87,11 +87,12 @@ (if-let [{:keys [keywordize? open? in style]} (parameter-coercion type)] (let [transform (comp (if keywordize? walk/keywordize-keys identity) in) ->open (if open? #(-open-model coercion %) identity) - format-coercer-pairs (if (= :request style) - (for [[format schema] (:content model)] - [format (-request-coercer coercion :body (->open schema))]) - [[:default (-request-coercer coercion style (->open model))]]) - format->coercer (some->> format-coercer-pairs + format-schema-pairs (if (= :request style) + (conj (:content model) [:default (:body model)]) + [[:default model]]) + format->coercer (some->> (for [[format schema] format-schema-pairs + :when schema] + [format (-request-coercer coercion (case style :request :body style) (->open schema))]) (filter second) (seq) (into {}))] diff --git a/test/cljc/reitit/ring_coercion_test.cljc b/test/cljc/reitit/ring_coercion_test.cljc index c8287c9f..da6c804a 100644 --- a/test/cljc/reitit/ring_coercion_test.cljc +++ b/test/cljc/reitit/ring_coercion_test.cljc @@ -610,8 +610,8 @@ (let [app (ring/ring-handler (ring/router [["/foo" {:post {:parameters {:request {:content {"application/json" json-request - "application/edn" edn-request - :default default-request}}} + "application/edn" edn-request} + :body default-request}} :responses {200 {:content {"application/json" json-response "application/edn" edn-response} :body default-response}}