add macros for registering routes and function for finding them
This commit is contained in:
parent
682ba6905e
commit
0112dc515a
|
@ -16,7 +16,8 @@
|
||||||
[slugger "1.0.1"]
|
[slugger "1.0.1"]
|
||||||
[clj-time "0.6.0"]
|
[clj-time "0.6.0"]
|
||||||
[org.clojure/math.numeric-tower "0.0.4"]
|
[org.clojure/math.numeric-tower "0.0.4"]
|
||||||
[clj-rss "0.1.3"]]
|
[clj-rss "0.1.3"]
|
||||||
|
[clj-metasearch "0.1.1"]]
|
||||||
:repl-options {:init-ns blarg.repl}
|
:repl-options {:init-ns blarg.repl}
|
||||||
:plugins [[lein-ring "0.8.10"]
|
:plugins [[lein-ring "0.8.10"]
|
||||||
[lein-environ "0.4.0"]]
|
[lein-environ "0.4.0"]]
|
||||||
|
|
37
src/blarg/route_utils.clj
Normal file
37
src/blarg/route_utils.clj
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
(ns blarg.route-utils
|
||||||
|
(:require [clj-metasearch.core :refer [find-vars]]
|
||||||
|
[compojure.core :refer [defroutes]]
|
||||||
|
[noir.util.route :refer [def-restricted-routes]]
|
||||||
|
[taoensso.timbre :refer [log]]
|
||||||
|
[clojure.string :as string]))
|
||||||
|
|
||||||
|
(defmacro register-routes [name & routes]
|
||||||
|
`(defroutes
|
||||||
|
~(with-meta name {:compojure-routes? true})
|
||||||
|
~@routes))
|
||||||
|
|
||||||
|
(defmacro register-restricted-routes [name & routes]
|
||||||
|
`(def-restricted-routes
|
||||||
|
~(with-meta name {:compojure-routes? true})
|
||||||
|
~@routes))
|
||||||
|
|
||||||
|
(defn find-routes [namespace-filter & more-routes]
|
||||||
|
(log :info "Discovering routes ...")
|
||||||
|
(let [routes (find-vars
|
||||||
|
:compojure-routes?
|
||||||
|
:require-all-namespaces? true
|
||||||
|
:namespace-pred (if (coll? namespace-filter)
|
||||||
|
(fn [namespace]
|
||||||
|
(some #(.startsWith (str namespace) %) namespace-filter))
|
||||||
|
(fn [namespace]
|
||||||
|
(.startsWith (str namespace) namespace-filter))))
|
||||||
|
names (->> routes
|
||||||
|
(map #(str (:var %)))
|
||||||
|
(string/join ", "))]
|
||||||
|
(log :info (str "Found " (count routes) " routes: " names))
|
||||||
|
(as-> routes x
|
||||||
|
(map :var x)
|
||||||
|
(map var-get x)
|
||||||
|
(concat x more-routes)
|
||||||
|
(vec x))))
|
||||||
|
|
Reference in a new issue