From 4f31304a1a8fcae8d235d5569571969fc7d4c0cb Mon Sep 17 00:00:00 2001 From: Wes Morgan Date: Mon, 6 Mar 2023 12:16:48 -0700 Subject: [PATCH] Lift definitions to root of swagger.json ...so that all of the absolute $ref's to them will resolve --- modules/reitit-swagger/src/reitit/swagger.cljc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/reitit-swagger/src/reitit/swagger.cljc b/modules/reitit-swagger/src/reitit/swagger.cljc index 3c3403cb..6c18d5bb 100644 --- a/modules/reitit-swagger/src/reitit/swagger.cljc +++ b/modules/reitit-swagger/src/reitit/swagger.cljc @@ -102,9 +102,17 @@ (if-let [endpoint (some->> c (keep transform-endpoint) (seq) (into {}))] [(swagger-path p (r/options router)) endpoint])) map-in-order #(->> % (apply concat) (apply array-map)) - paths (->> router (r/compiled-routes) (filter accept-route) (map transform-path) map-in-order)] + paths (->> router (r/compiled-routes) (filter accept-route) (map transform-path) map-in-order) + definitions (reduce-kv + (fn [ds _ v] + (let [ks (keys v)] + (merge ds (apply merge + (for [k ks] + (when-let [method-map (get v k)] + (:definitions method-map))))))) + {} paths)] {:status 200 - :body (meta-merge swagger {:paths paths})})) + :body (meta-merge swagger {:paths paths :definitions definitions})})) ([req res raise] (try (res (create-swagger req))