reitit/examples/just-coercion-with-ring/src/example/naive.clj
2018-06-10 23:10:46 +03:00

26 lines
717 B
Clojure

(ns example.naive
(:require [clojure.spec.alpha :as s]
[clojure.walk :as walk]))
(s/def ::x int?)
(s/def ::y int?)
(s/def ::request (s/keys :req-un [::x ::y]))
(defn ->long [x]
(try
(Long/parseLong x)
(catch Exception _
x)))
(defn app [request]
(println (:query-params request))
(let [{:keys [x y] :as params} (-> (:query-params request)
(walk/keywordize-keys)
(update :x ->long)
(update :y ->long))]
(if (s/valid? ::request params)
{:status 200
:body {:result (+ x y)
:source :naive}}
{:status 400
:body "invalid input"})))