refactor: parameterise -get-apidocs-openapi with ->schema-object

This commit is contained in:
Joel Kaasinen 2023-08-24 11:05:43 +03:00
parent b0c810a981
commit 803ed0933a

View file

@ -138,17 +138,15 @@
;; also, this has internally massive amount of duplicate code, could be simplified ;; also, this has internally massive amount of duplicate code, could be simplified
;; ... tests too ;; ... tests too
(defn -get-apidocs-openapi (defn -get-apidocs-openapi
[_ {:keys [request parameters responses content-types] :or {content-types ["application/json"]}} options] [->schema-object {:keys [request parameters responses content-types] :or {content-types ["application/json"]}} options]
(let [{:keys [body multipart]} parameters (let [{:keys [body multipart]} parameters
parameters (dissoc parameters :request :body :multipart) parameters (dissoc parameters :request :body :multipart)
->schema-object (fn [schema opts]
(let [current-opts (merge options opts)]
(json-schema/transform schema current-opts)))
->content (fn [data schema] ->content (fn [data schema]
(merge (merge
{:schema schema} {:schema schema}
(select-keys data [:description :examples]) (select-keys data [:description :examples])
(:openapi data)))] (:openapi data)))
->schema-object #(->schema-object %1 (merge options %2))]
(merge (merge
(when (seq parameters) (when (seq parameters)
{:parameters {:parameters
@ -263,7 +261,7 @@
(if (:schema $) (if (:schema $)
(update $ :schema swagger/transform {:type :schema}) (update $ :schema swagger/transform {:type :schema})
$))]))})) $))]))}))
:openapi (-get-apidocs-openapi this data options) :openapi (-get-apidocs-openapi json-schema/transform data options)
(throw (throw
(ex-info (ex-info
(str "Can't produce Schema apidocs for " specification) (str "Can't produce Schema apidocs for " specification)