add macros for registering routes and function for finding them

This commit is contained in:
Gered 2014-03-28 21:44:42 -04:00
parent 682ba6905e
commit 0112dc515a
2 changed files with 39 additions and 1 deletions

View file

@ -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
View 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))))