diff --git a/src/NoteHub/handler.clj b/src/NoteHub/handler.clj index 5b766b8..3b106b7 100644 --- a/src/NoteHub/handler.clj +++ b/src/NoteHub/handler.clj @@ -45,20 +45,6 @@ [(keyword (str (name cls) ".markdown")) opts [:textarea input]])) -#_ ( - - ; ######## OLD CODE START - -(ns NoteHub.views.pages - (:require ) - (:use - - - [noir.response :only [redirect status content-type]] - [noir.core :only [defpage defpartial]] - [noir.statuses] - [noir.util.crypt :only [encrypt]])) - (when-not (storage/valid-publisher? "NoteHub") (storage/register-publisher "NoteHub")) @@ -67,21 +53,8 @@ [input] (sreplace input #"(|javascript:)" "")) -; Sets a custom message for each needed HTTP status. -; The message to be assigned is extracted with a dynamically generated key -(doseq [code [400 403 404 500]] - (set-page! code - (let [message (get-message (keyword (str "status-" code)))] - (layout message - [:article [:h1 message]])))) - -(defn- response - "shortcut for rendering an HTTP status" - [code] - (status code (get-page code))) - ; input form for the markdown text with a preview area -(defpartial input-form [form-url command fields content passwd-msg] +(defn input-form [form-url command fields content passwd-msg] (let [css-class (when (= :publish command) :hidden)] (layout (get-message :new-note) [:article#preview ""] @@ -99,9 +72,34 @@ (submit-button {:class "button ui-elem" :id :publish-button} (get-message command))])]))) -(defn generate-session [] - (encrypt (str (rand-int Integer/MAX_VALUE)))) +#_ ( + + ; ######## OLD CODE START + +(ns NoteHub.views.pages + (:require ) + (:use + + + [noir.response :only [redirect status content-type]] + [noir.core :only [defpage defpartial]] + [noir.statuses] + [noir.util.crypt :only [encrypt]])) + +; Sets a custom message for each needed HTTP status. +; The message to be assigned is extracted with a dynamically generated key +(doseq [code [400 403 404 500]] + (set-page! code + (let [message (get-message (keyword (str "status-" code)))] + (layout message + [:article [:h1 message]])))) + + +(defn- response + "shortcut for rendering an HTTP status" + [code] + (status code (get-page code))) ; Routes ; ====== @@ -119,24 +117,6 @@ (slurp "LANDING.md")) (md-node :div.centered.helvetica (get-message :footer)))) -(defpage "/:year/:month/:day/:title" {:keys [year month day title] :as params} - (let [noteID (api/build-key [year month day] title)] - (when (storage/note-exists? noteID) - (let [note (api/get-note noteID) - sanitized-note (sanitize (:note note))] - (layout (:title note) - (md-node :article.bottom-space sanitized-note) - (let [urls {:short-url (api/url (storage/create-short-url noteID params)) - :notehub "/"} - links (map #(link-to - (if (urls %) - (urls %) - (str (:longURL note) "/" (name %))) - (get-message %)) - [:notehub :stats :edit :export :short-url]) - links (interpose [:span.middot "·"] links)] - [:div#links links])))))) - (defpage "/:year/:month/:day/:title/export" {:keys [year month day title]} (when-let [md-text (:note (api/get-note (api/build-key [year month day] title)))] (content-type "text/plain; charset=utf-8" md-text))) @@ -221,6 +201,26 @@ (context "/api" [] api-routes) (GET "/" [] "Hello World") + (GET "/:year/:month/:day/:title" [year month day title :as params] + (let [params (assoc (:query-params params) + :year year :month month :day day :title title) + noteID (api/build-key [year month day] title)] + (when (storage/note-exists? noteID) + (let [note (api/get-note noteID) + sanitized-note (sanitize (:note note))] + (layout (:title note) + (md-node :article.bottom-space sanitized-note) + (let [urls {:short-url (api/url (storage/create-short-url noteID params)) + :notehub "/"} + links (map #(link-to + (if (urls %) + (urls %) + (str (:longURL note) "/" (name %))) + (get-message %)) + [:notehub :stats :edit :export :short-url]) + links (interpose [:span.middot "·"] links)] + [:div#links links])))))) + (GET "/:short-url" [short-url] (when-let [params (storage/resolve-url short-url)] (let [{:keys [year month day title]} params @@ -229,7 +229,7 @@ long-url (if (empty? rest-params) core-url (util/url core-url rest-params))] (redirect long-url)))) - (route/resources "/resources") + (route/resources "/") (route/not-found "Not Found")) (def app diff --git a/src/NoteHub/storage.clj b/src/NoteHub/storage.clj index 4365ebb..3bc1187 100644 --- a/src/NoteHub/storage.clj +++ b/src/NoteHub/storage.clj @@ -113,7 +113,7 @@ "Creates a short url for the given request metadata or extracts one if it was already created" [noteID params] - (let [key (str (into (sorted-map) params))] + (let [key (str (into (sorted-map) (clojure.walk/keywordize-keys params)))] (if (short-url-exists? key) (redis :hget :short-url key) (let [hash-stream (partition 5 (repeatedly #(rand-int 36))) diff --git a/test/NoteHub/test/api.clj b/test/NoteHub/test/api.clj index fe3ad98..4585829 100644 --- a/test/NoteHub/test/api.clj +++ b/test/NoteHub/test/api.clj @@ -57,10 +57,8 @@ (is (storage/note-exists? (:noteID post-response))) (let [su (last (clojure.string/split (:shortURL get-response) #"/"))] (is (= su (storage/create-short-url (:noteID post-response) (storage/resolve-url su))))) - (let [_ (println "DEBUG I" (clojure.string/replace (:shortURL get-response) domain "")) - resp (send-request + (let [resp (send-request (clojure.string/replace (:shortURL get-response) domain "")) - _ (println "DEBUG II" ((:headers resp) "Location")) resp (send-request ((:headers resp) "Location"))] (is (substring? "hello world"(:body resp)))) (is (= (:publisher get-response) pid))