mirror of
https://github.com/metosin/reitit.git
synced 2025-12-23 18:41:11 +00:00
28 lines
757 B
Clojure
28 lines
757 B
Clojure
|
|
(ns example.naive
|
||
|
|
(:require [clojure.spec.alpha :as s]
|
||
|
|
[clojure.walk :as walk]
|
||
|
|
[example.server :as server]))
|
||
|
|
|
||
|
|
(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"})))
|