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