| 
1 | 1 | (ns compojure.api.core  | 
2 | 2 |   (:require [compojure.api.meta :as meta]  | 
 | 3 | +            [compojure.api.async]  | 
3 | 4 |             [compojure.api.routes :as routes]  | 
4 | 5 |             [compojure.api.middleware :as mw]  | 
5 | 6 |             [compojure.core :as compojure]  | 
6 | 7 |             [clojure.tools.macro :as macro]))  | 
7 | 8 | 
 
  | 
8 |  | -(defn- handle [handlers request]  | 
9 |  | -  (some #(% request) handlers))  | 
 | 9 | +(defn ring-handler  | 
 | 10 | +  "Creates vanilla ring-handler from any invokable thing (e.g. compojure-api route)"  | 
 | 11 | +  [handler]  | 
 | 12 | +  (fn  | 
 | 13 | +    ([request] (handler request))  | 
 | 14 | +    ([request respond raise] (handler request respond raise))))  | 
10 | 15 | 
 
  | 
11 | 16 | (defn routes  | 
12 | 17 |   "Create a Ring handler by combining several handlers into one."  | 
13 | 18 |   [& handlers]  | 
14 |  | -  (let [handlers (seq (keep identity handlers))]  | 
15 |  | -    (routes/create nil nil {} (vec handlers) (partial handle handlers))))  | 
 | 19 | +  (let [handlers (seq (keep identity (flatten handlers)))]  | 
 | 20 | +    (routes/map->Route  | 
 | 21 | +      {:childs (vec handlers)  | 
 | 22 | +       :handler (meta/routing handlers)})))  | 
16 | 23 | 
 
  | 
17 | 24 | (defmacro defroutes  | 
18 | 25 |   "Define a Ring handler function from a sequence of routes.  | 
 | 
35 | 42 |   not satisfying compojure.api.routes/Routing -protocol."  | 
36 | 43 |   [& handlers]  | 
37 | 44 |   (let [handlers (keep identity handlers)]  | 
38 |  | -    (routes/create nil nil {} nil (partial handle handlers))))  | 
 | 45 | +    (routes/map->Route {:handler (meta/routing handlers)})))  | 
39 | 46 | 
 
  | 
40 | 47 | (defmacro middleware  | 
41 | 48 |   "Wraps routes with given middlewares using thread-first macro.  | 
 | 
67 | 74 |       {:childs [handler]  | 
68 | 75 |        :handler x-handler})))  | 
69 | 76 | 
 
  | 
70 |  | -(defmacro context {:style/indent 2} [& args] (meta/restructure nil      args {:context? true}))  | 
 | 77 | +(defmacro context {:style/indent 2} [& args] (meta/restructure nil args {:context? true :&form &form :&env &env}))  | 
71 | 78 | 
 
  | 
72 | 79 | (defmacro GET     {:style/indent 2} [& args] (meta/restructure :get     args nil))  | 
73 | 80 | (defmacro ANY     {:style/indent 2} [& args] (meta/restructure nil      args nil))  | 
 | 
0 commit comments