reitit/examples/just-coercion-with-ring/src/example/naive.clj

27 lines
717 B
Clojure
Raw Normal View History

2017-12-03 15:43:57 +00:00
(ns example.naive
(:require [clojure.spec.alpha :as s]
2018-06-10 20:10:46 +00:00
[clojure.walk :as walk]))
2017-12-03 15:43:57 +00:00
(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"})))