Skip to content

Commit

Permalink
Fixed routing to deal properly with underscores in action and control…
Browse files Browse the repository at this point in the history
…ler names.
  • Loading branch information
Matthew Courtney committed Jun 20, 2010
1 parent 8da39e6 commit af57dbf
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
18 changes: 16 additions & 2 deletions conjure_core/src/conjure/core/config/routes_util.clj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
[clout.core :as clout]
[config.routes :as routes]
[conjure.core.controller.util :as controller-util]
[conjure.core.server.request :as request]))
[conjure.core.server.request :as request]
[conjure.core.util.loading-utils :as loading-utils]))

(defn
function-parse []
Expand All @@ -25,14 +26,26 @@
{}
request-map))

(defn
clean-controller-action [request-map]
(reduce
(fn [output [request-key request-value]]
(cond
(or (= request-key :controller) (= request-key :action))
(assoc output request-key (loading-utils/underscores-to-dashes request-value))
true
(assoc output request-key request-value)))
{}
request-map))

(defn
parse-compiled-route [compiled-route-map]
(let [route (:route compiled-route-map)
request-map (:request-map compiled-route-map)]
(when (and route request-map)
(let [route-map (clout/route-matches route (request/uri))]
(when route-map
(symbol-replace request-map route-map))))))
(clean-controller-action (symbol-replace request-map route-map)))))))

(defn
compiled-parse []
Expand All @@ -56,5 +69,6 @@ before calling the controller action." }
#^{ :doc "This function calls the appropriate controller and action." }
route-request []
(let [path-map (parse-path)]
(logging/debug (str "path-map: " path-map))
(when path-map
(call-controller path-map))))
8 changes: 7 additions & 1 deletion conjure_core/test/conjure/core/config/test_routes_util.clj
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,13 @@
{ :controller "home", :action "index" }
(parse-compiled-route
{ :route (clout/route-compile "/")
:request-map { :controller "home", :action "index" } })))))
:request-map { :controller "home", :action "index" } }))))
(request/set-request-map { :request { :uri "/message/list_records" } }
(is (=
{ :controller "message", :action "list-records" }
(parse-compiled-route
{ :route (clout/route-compile "/:controller/:action")
:request-map { :controller 'controller, :action 'action } })))))

(deftest test-compiled-parse
(request/set-request-map { :request { :uri "/home/index/1" } }
Expand Down

0 comments on commit af57dbf

Please sign in to comment.