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"]
|
||||
[clj-time "0.6.0"]
|
||||
[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}
|
||||
:plugins [[lein-ring "0.8.10"]
|
||||
[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