diff --git a/src/com/walmartlabs/lacinia/parser/schema.clj b/src/com/walmartlabs/lacinia/parser/schema.clj index 0373ae46..70c2fbdc 100644 --- a/src/com/walmartlabs/lacinia/parser/schema.clj +++ b/src/com/walmartlabs/lacinia/parser/schema.clj @@ -629,6 +629,7 @@ (s/def ::fn-map (s/map-of simple-keyword? ::field-fn)) (s/def ::parse ::schema/parse-or-serialize-fn) (s/def ::serialize ::schema/parse-or-serialize-fn) +(s/def ::specified-by string?) (s/def ::scalar-def (s/keys :req-un [::parse ::serialize] :opt-un [::description ::specified-by])) (s/def ::description string?) diff --git a/src/com/walmartlabs/lacinia/schema.clj b/src/com/walmartlabs/lacinia/schema.clj index 1d196431..e3bdca11 100644 --- a/src/com/walmartlabs/lacinia/schema.clj +++ b/src/com/walmartlabs/lacinia/schema.clj @@ -38,9 +38,10 @@ [clojure.pprint :as pprint] [com.walmartlabs.lacinia.selection :as selection]) (:import - (clojure.lang IObj PersistentQueue) - (java.io Writer) - (java.util.concurrent Executor ThreadPoolExecutor TimeUnit LinkedBlockingQueue ThreadFactory))) + (java.net URL) + (clojure.lang IObj PersistentQueue) + (java.io Writer) + (java.util.concurrent Executor ThreadPoolExecutor TimeUnit LinkedBlockingQueue ThreadFactory))) ;; When using Clojure 1.8, the dependency on clojure-future-spec must be included, ;; and this code will trigger @@ -289,6 +290,13 @@ ([message data] (merge {:message message} data))) +(defn url? + [url] + (try + (URL. url) + true + (catch Exception _ false))) + ;;------------------------------------------------------------------------------- ;; ## Validations @@ -397,6 +405,7 @@ :var var?)) (s/def ::parse ::parse-or-serialize-fn) (s/def ::serialize ::parse-or-serialize-fn) +(s/def ::specified-by url?) (s/def ::scalar (s/keys :opt-un [::description ::directives ::specified-by]