Merge pull request #174 from nenadalm/async_ring

Support swagger with async ring
This commit is contained in:
Tommi Reiman 2018-11-17 12:23:04 +02:00 committed by GitHub
commit c3af856893
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -73,7 +73,8 @@
(defn create-swagger-handler [] (defn create-swagger-handler []
"Create a ring handler to emit swagger spec. Collects all routes from router which have "Create a ring handler to emit swagger spec. Collects all routes from router which have
an intersecting `[:swagger :id]` and which are not marked with `:no-doc` route data." an intersecting `[:swagger :id]` and which are not marked with `:no-doc` route data."
(fn [{:keys [::r/router ::r/match :request-method]}] (fn create-swagger
([{:keys [::r/router ::r/match :request-method]}]
(let [{:keys [id] :or {id ::default} :as swagger} (-> match :result request-method :data :swagger) (let [{:keys [id] :or {id ::default} :as swagger} (-> match :result request-method :data :swagger)
->set (fn [x] (if (or (set? x) (sequential? x)) (set x) (conj #{} x))) ->set (fn [x] (if (or (set? x) (sequential? x)) (set x) (conj #{} x)))
ids (->set id) ids (->set id)
@ -101,4 +102,9 @@
[(path->template p) endpoint]))] [(path->template p) endpoint]))]
(let [paths (->> router (r/compiled-routes) (filter accept-route) (map transform-path) (into {}))] (let [paths (->> router (r/compiled-routes) (filter accept-route) (map transform-path) (into {}))]
{:status 200 {:status 200
:body (meta-merge swagger {:paths paths})})))) :body (meta-merge swagger {:paths paths})})))
([req res raise]
(try
(res (create-swagger req))
(catch #?(:clj Exception :cljs :default) e
(raise e))))))