compojure-api rocks da house!

This commit is contained in:
Guillaume Buisson 2014-12-07 20:30:24 +01:00
parent 9d9a6ae0ac
commit d25581a453
2 changed files with 52 additions and 2 deletions

View file

@ -14,5 +14,9 @@
;;compojure ;;compojure
[compojure "1.3.1"] [compojure "1.3.1"]
;;compojure-api
]) [metosin/compojure-api "0.16.5"]
[prismatic/schema "0.3.3"]
[metosin/ring-http-response "0.5.2"]
[metosin/ring-swagger "0.14.1"]
[metosin/ring-swagger-ui "2.0.17"]])

View file

@ -0,0 +1,46 @@
(ns meetup.compojure-api
(:require [ring.adapter.jetty :refer [run-jetty]]
[ring.util.http-response :refer :all]
[compojure.api.sweet :refer :all]
[schema.core :as s]))
(defonce orders (atom {}))
(s/defschema Supplement
{:type (s/enum :cheese :beef)})
(s/defschema Pizza
{:recipe (s/enum :hawaian :italian :vegan)
:size (s/enum :small :medium :large)
(s/optional-key :supplements) [Supplement]})
(s/defschema Dessert
{:type (s/enum :yoghourt :cake :fruit)})
(s/defschema Drink
{:brand (s/enum :coca-cola :fanta :sprite)})
(s/defschema Order
{:type (s/enum :in-place :take-away)
:pizzas [Pizza]
:drinks [Drink]
:desserts [Desserts]})
(defn place [order]
(swap! orders into {(keyword (str (java.util.UUID/randomUUID))) order}) order)
(defapi app
(swagger-ui)
(swagger-docs :title "Chez Guillaume, pizza de qualité!!")
(swaggered "Order"
:description "Order operations"
(context "/order" []
(POST* "/" []
:return Order
:body [order Order]
:summary "Place an order"
(place order)))))
(defonce server
(run-jetty (-> #'app)
{:port 3003 :join? false}))