|
134 | 134 | (defn- wrap-route-info [handler route-info] |
135 | 135 | (fn |
136 | 136 | ([request] |
137 | | - (handler (assoc request :compojure/route route-info |
138 | | - :compojure/full-route (str (:compojure/context request) (second route-info))))) |
| 137 | + (let [full-route (str (:compojure/context request) (second route-info))] |
| 138 | + (handler (assoc request |
| 139 | + :compojure/route route-info |
| 140 | + :compojure/full-route full-route)))) |
139 | 141 | ([request respond raise] |
140 | | - (handler (assoc request :compojure/route route-info |
141 | | - :compojure/full-route (str (:compojure/context request) (second route-info)) respond raise))))) |
| 142 | + (let [full-route (str (:compojure/context request) (second route-info))] |
| 143 | + (handler (assoc request |
| 144 | + :compojure/route route-info |
| 145 | + :compojure/full-route full-route) |
| 146 | + respond |
| 147 | + raise))))) |
142 | 148 |
|
143 | 149 | (defn- wrap-route-matches [handler method path] |
144 | 150 | (fn |
|
264 | 270 | (-> request |
265 | 271 | (assoc-route-params (decode-route-params params)) |
266 | 272 | (assoc :path-info (if (= subpath "") "/" subpath) |
267 | | - :context (remove-suffix uri subpath) |
268 | | - :compojure/context (str (:compojure/context request) context-route)))))) |
| 273 | + :context (remove-suffix uri subpath)) |
| 274 | + (update :compojure/context (fn [ctx] (str ctx context-route))))))) |
269 | 275 |
|
270 | 276 | (defn- context-route [route] |
271 | 277 | (let [re-context {:__path-info #"|/.*"}] |
272 | | - (cond |
273 | | - (string? route) |
274 | | - (with-meta (clout/route-compile (str route ":__path-info") re-context) {:context-route route}) |
275 | | - (and (vector? route) (literal? route)) |
276 | | - (with-meta (clout/route-compile |
277 | | - (str (first route) ":__path-info") |
278 | | - (merge (apply hash-map (rest route)) re-context)) {:context-route (first route)}) |
279 | | - (vector? route) |
280 | | - `(let [uncompiled-route# ~(first route)] |
281 | | - (with-meta |
282 | | - (clout/route-compile |
283 | | - (str uncompiled-route# ":__path-info") |
284 | | - ~(merge (apply hash-map (rest route)) re-context)) |
285 | | - {:context-route uncompiled-route#})) |
286 | | - :else |
287 | | - `(let [path# ~route] |
288 | | - (with-meta |
289 | | - (clout/route-compile (str path# ":__path-info") ~re-context) |
290 | | - (if (string? path#) |
291 | | - {:context-route path#} |
292 | | - {})))))) |
| 278 | + (cond |
| 279 | + (string? route) |
| 280 | + (with-meta (clout/route-compile (str route ":__path-info") re-context) |
| 281 | + {:context-route route}) |
| 282 | + (and (vector? route) (literal? route)) |
| 283 | + (with-meta (clout/route-compile |
| 284 | + (str (first route) ":__path-info") |
| 285 | + (merge (apply hash-map (rest route)) re-context)) |
| 286 | + {:context-route (first route)}) |
| 287 | + (vector? route) |
| 288 | + `(let [route# ~(first route)] |
| 289 | + (with-meta |
| 290 | + (clout/route-compile |
| 291 | + (str route# ":__path-info") |
| 292 | + ~(merge (apply hash-map (rest route)) re-context)) |
| 293 | + {:context-route route#})) |
| 294 | + :else |
| 295 | + `(let [route# ~route] |
| 296 | + (with-meta |
| 297 | + (clout/route-compile (str route# ":__path-info") ~re-context) |
| 298 | + (if (string? route#) |
| 299 | + {:context-route route#} |
| 300 | + {})))))) |
293 | 301 |
|
294 | 302 | (defn ^:no-doc make-context [route make-handler] |
295 | 303 | (letfn [(handler |
|
0 commit comments