mirror of
https://github.com/metosin/reitit.git
synced 2025-12-17 08:21:11 +00:00
Update deps
This commit is contained in:
parent
f0c5698a89
commit
027d46508b
3 changed files with 36 additions and 29 deletions
|
|
@ -2,27 +2,33 @@
|
|||
(:require [clojure.spec.alpha :as s]
|
||||
[spec-tools.core :as st #?@(:cljs [:refer [Spec]])]
|
||||
[spec-tools.data-spec :as ds]
|
||||
[spec-tools.conform :as conform]
|
||||
[spec-tools.transform :as stt]
|
||||
[spec-tools.swagger.core :as swagger]
|
||||
[reitit.coercion :as coercion]
|
||||
[clojure.set :as set])
|
||||
#?(:clj
|
||||
(:import (spec_tools.core Spec))))
|
||||
|
||||
(def string-conforming
|
||||
(st/type-conforming
|
||||
(merge
|
||||
conform/string-type-conforming
|
||||
conform/strip-extra-keys-type-conforming)))
|
||||
(def string-transformer
|
||||
(st/type-transformer
|
||||
{:name :string
|
||||
:decoders (merge
|
||||
stt/string-type-decoders
|
||||
stt/strip-extra-keys-type-decoders)
|
||||
:encoders stt/string-type-encoders
|
||||
:default-encoder stt/any->any}))
|
||||
|
||||
(def json-conforming
|
||||
(st/type-conforming
|
||||
(merge
|
||||
conform/json-type-conforming
|
||||
conform/strip-extra-keys-type-conforming)))
|
||||
(def json-transformer
|
||||
(st/type-transformer
|
||||
{:name :json
|
||||
:decoders (merge
|
||||
stt/json-type-decoders
|
||||
stt/strip-extra-keys-type-decoders)
|
||||
:encoders stt/json-type-encoders
|
||||
:default-encoder stt/any->any}))
|
||||
|
||||
(def default-conforming
|
||||
::default)
|
||||
(def just-validate-transformer
|
||||
(st/type-transformer {}))
|
||||
|
||||
(defprotocol IntoSpec
|
||||
(into-spec [this name]))
|
||||
|
|
@ -58,12 +64,12 @@
|
|||
|
||||
(def default-options
|
||||
{:coerce-response? coerce-response?
|
||||
:conforming {:body {:default default-conforming
|
||||
:formats {"application/json" json-conforming}}
|
||||
:string {:default string-conforming}
|
||||
:response {:default default-conforming}}})
|
||||
:transformers {:body {:default just-validate-transformer
|
||||
:formats {"application/json" json-transformer}}
|
||||
:string {:default string-transformer}
|
||||
:response {:default just-validate-transformer}}})
|
||||
|
||||
(defn create [{:keys [conforming coerce-response?] :as opts}]
|
||||
(defn create [{:keys [transformers coerce-response?] :as opts}]
|
||||
^{:type ::coercion/coercion}
|
||||
(reify coercion/Coercion
|
||||
(-get-name [_] :spec)
|
||||
|
|
@ -98,16 +104,16 @@
|
|||
(update :problems (partial mapv #(update % :pred stringify-pred)))))
|
||||
(-request-coercer [this type spec]
|
||||
(let [spec (coercion/-compile-model this spec nil)
|
||||
{:keys [formats default]} (conforming type)]
|
||||
{:keys [formats default]} (transformers type)]
|
||||
(fn [value format]
|
||||
(if-let [conforming (or (get formats format) default)]
|
||||
(let [conformed (st/conform spec value conforming)]
|
||||
(if (s/invalid? conformed)
|
||||
(let [problems (st/explain-data spec value conforming)]
|
||||
(if-let [transformer (or (get formats format) default)]
|
||||
(let [transformed (st/conform spec value transformer)]
|
||||
(if (s/invalid? transformed)
|
||||
(let [problems (st/explain-data spec value transformer)]
|
||||
(coercion/map->CoercionError
|
||||
{:spec spec
|
||||
:problems (::s/problems problems)}))
|
||||
(s/unform spec conformed)))
|
||||
(s/unform spec transformed)))
|
||||
value))))
|
||||
(-response-coercer [this spec]
|
||||
(if (coerce-response? spec)
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@
|
|||
|
||||
[meta-merge "1.0.0"]
|
||||
[ring/ring-core "1.6.3"]
|
||||
[metosin/spec-tools "0.6.2-SNAPSHOT"]
|
||||
[metosin/schema-tools "0.10.2-SNAPSHOT"]
|
||||
[metosin/spec-tools "0.7.0-SNAPSHOT"]
|
||||
[metosin/schema-tools "0.10.2"]
|
||||
[metosin/ring-swagger-ui "2.2.10"]
|
||||
[metosin/jsonista "0.2.0"]]
|
||||
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
"modules/reitit-swagger/src"]
|
||||
|
||||
:dependencies [[org.clojure/clojure "1.9.0"]
|
||||
[org.clojure/clojurescript "1.9.946"]
|
||||
[org.clojure/clojurescript "1.10.238"]
|
||||
|
||||
;; modules dependencies
|
||||
[metosin/reitit]
|
||||
|
|
@ -58,7 +58,7 @@
|
|||
[criterium "0.4.4"]
|
||||
[org.clojure/test.check "0.9.0"]
|
||||
[org.clojure/tools.namespace "0.2.11"]
|
||||
[com.gfredericks/test.chuck "0.2.8"]]}
|
||||
[com.gfredericks/test.chuck "0.2.9"]]}
|
||||
:perf {:jvm-opts ^:replace ["-server"
|
||||
"-Xmx4096m"
|
||||
"-Dclojure.compiler.direct-linking=true"]
|
||||
|
|
|
|||
|
|
@ -57,7 +57,8 @@
|
|||
(let [spec (:body (app
|
||||
{:request-method :get
|
||||
:uri "/api/swagger.json"}))]
|
||||
(is (= {:x-id ::math
|
||||
(is (= {:x-id #{::math}
|
||||
:swagger "2.0"
|
||||
:info {:title "my-api"}
|
||||
:paths {"/api/schema/plus" {:get {:parameters [{:description ""
|
||||
:format "int32"
|
||||
|
|
|
|||
Loading…
Reference in a new issue