mirror of
https://github.com/metosin/reitit.git
synced 2025-12-18 00:41:12 +00:00
swagger-spec-handler => create-swagger-handler
This commit is contained in:
parent
53bdc622ee
commit
f66850dacb
3 changed files with 23 additions and 23 deletions
|
|
@ -40,7 +40,7 @@
|
||||||
["/swagger.json"
|
["/swagger.json"
|
||||||
{:get {:no-doc true
|
{:get {:no-doc true
|
||||||
:swagger {:info {:title "my-api"}}
|
:swagger {:info {:title "my-api"}}
|
||||||
:handler swagger/swagger-spec-handler}}]
|
:handler (swagger/create-swagger-handler)}}]
|
||||||
|
|
||||||
["/spec" {:coercion spec/coercion}
|
["/spec" {:coercion spec/coercion}
|
||||||
["/plus"
|
["/plus"
|
||||||
|
|
|
||||||
|
|
@ -65,24 +65,24 @@
|
||||||
{:name ::swagger
|
{:name ::swagger
|
||||||
:spec ::spec})
|
:spec ::spec})
|
||||||
|
|
||||||
(defn swagger-spec-handler
|
(defn create-swagger-handler []
|
||||||
"Ring handler to emit swagger spec."
|
"Create a ring handler to emit swagger spec."
|
||||||
[{:keys [::r/router ::r/match :request-method]}]
|
(fn [{:keys [::r/router ::r/match :request-method]}]
|
||||||
(let [{:keys [id] :as swagger} (-> match :result request-method :data :swagger)
|
(let [{:keys [id] :as swagger} (-> match :result request-method :data :swagger)
|
||||||
swagger (set/rename-keys swagger {:id :x-id})
|
swagger (set/rename-keys swagger {:id :x-id})
|
||||||
accept-route #(-> % second :swagger :id (= id))
|
accept-route #(-> % second :swagger :id (= id))
|
||||||
transform-endpoint (fn [[method {{:keys [coercion no-doc swagger] :as data} :data}]]
|
transform-endpoint (fn [[method {{:keys [coercion no-doc swagger] :as data} :data}]]
|
||||||
(if (and data (not no-doc))
|
(if (and data (not no-doc))
|
||||||
[method
|
[method
|
||||||
(meta-merge
|
(meta-merge
|
||||||
(if coercion
|
(if coercion
|
||||||
(coercion/-get-apidocs coercion :swagger data))
|
(coercion/-get-apidocs coercion :swagger data))
|
||||||
(select-keys data [:tags :summary :description])
|
(select-keys data [:tags :summary :description])
|
||||||
(dissoc swagger :id))]))
|
(dissoc swagger :id))]))
|
||||||
transform-path (fn [[p _ c]]
|
transform-path (fn [[p _ c]]
|
||||||
(if-let [endpoint (some->> c (keep transform-endpoint) (seq) (into {}))]
|
(if-let [endpoint (some->> c (keep transform-endpoint) (seq) (into {}))]
|
||||||
[p endpoint]))]
|
[p endpoint]))]
|
||||||
(if id
|
(if id
|
||||||
(let [paths (->> router (r/routes) (filter accept-route) (map transform-path) (into {}))]
|
(let [paths (->> router (r/routes) (filter accept-route) (map transform-path) (into {}))]
|
||||||
{:status 200
|
{:status 200
|
||||||
:body (meta-merge swagger {:paths paths})}))))
|
:body (meta-merge swagger {:paths paths})})))))
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
["/swagger.json"
|
["/swagger.json"
|
||||||
{:get {:no-doc true
|
{:get {:no-doc true
|
||||||
:swagger {:info {:title "my-api"}}
|
:swagger {:info {:title "my-api"}}
|
||||||
:handler swagger/swagger-spec-handler}}]
|
:handler (swagger/create-swagger-handler)}}]
|
||||||
|
|
||||||
["/spec" {:coercion spec/coercion}
|
["/spec" {:coercion spec/coercion}
|
||||||
["/plus"
|
["/plus"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue