From d74dc8f94992e035a00f7d64a2191dbca480c489 Mon Sep 17 00:00:00 2001 From: sostler Date: Sat, 8 May 2010 14:50:22 -0400 Subject: Fixed chat/log subdomain routing --- src/site.clj | 67 +++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/site.clj b/src/site.clj index cccfa97..be59e09 100644 --- a/src/site.clj +++ b/src/site.clj @@ -71,6 +71,11 @@ ;; Room handling +(def *default-room* "dumpfm") + +(defn default-room? [key] + (= (lower-case key) *default-room*)) + (defn lookup-room [key] (@rooms (lower-case key))) @@ -592,9 +597,10 @@ ORDER BY msg_count DESC") (.toString st))) (defn validated-chat [session room-key template] - (if (validate-room-access room-key session) - (chat session (lookup-room room-key) template) - (resp-error "UNKNOWN_ROOM"))) + (let [room-key (if (= (lower-case room-key) "www") *default-room* room-key)] + (if (validate-room-access room-key session) + (chat session (lookup-room room-key) template) + (resp-error "UNKNOWN_ROOM")))) (defn refresh [session params room] (dosync @@ -667,7 +673,7 @@ ORDER BY msg_count DESC") ;; TODO: make work for all rooms (defn browser [session] - (let [room (lookup-room "dumpfm") + (let [room (lookup-room *default-room*) now (System/currentTimeMillis) nick (session :nick) st (fetch-template "browser" session)] @@ -689,36 +695,40 @@ ORDER BY msg_count DESC") ;; Chat Log (defn log [session room offset params] - (let [st (fetch-template "log" session) - logger (make-time-logger) - offset (maybe-parse-int offset 0) - dump-offset (* offset *dumps-per-page*) - image-only (and (not (room :admin_only)) - (not= (params :show) "all")) - raw-dumps (logger tags/fetch-dumps-by-room :room-id (room :room_id) - :image-only image-only - :amount (+ 1 *dumps-per-page*) - :offset dump-offset) - dumps (map tags/add-favorited-flag (take *dumps-per-page* raw-dumps) (repeat session)) -;; json-tags (for [dump dumps :when (not (empty? (dump :tags)))] -;; (json-str {"id" (dump :message_id) "tags" (dump :tags) })) - dumps (map tags/remove-tags-for-output dumps) - dumps (logger doall (map process-message-for-output dumps))] + (let [roomkey (room :key) + st (fetch-template "log" session) + logger (make-time-logger) + offset (maybe-parse-int offset 0) + dump-offset (* offset *dumps-per-page*) + image-only (and (not (room :admin_only)) + (not= (params :show) "all")) + raw-dumps (logger tags/fetch-dumps-by-room :room-id (room :room_id) + :image-only image-only + :amount (+ 1 *dumps-per-page*) + :offset dump-offset) + dumps (map tags/add-favorited-flag (take *dumps-per-page* raw-dumps) (repeat session)) + ;; json-tags (for [dump dumps :when (not (empty? (dump :tags)))] + ;; (json-str {"id" (dump :message_id) "tags" (dump :tags) })) + dumps (map tags/remove-tags-for-output dumps) + dumps (logger doall (map process-message-for-output dumps))] (if (> (count raw-dumps) *dumps-per-page*) (.setAttribute st "next" (inc offset))) (if (not= offset 0) (.setAttribute st "prev" (max (dec offset) 0))) (.setAttribute st "dumps" dumps) -;; (.setAttribute st "json_tags" json-tags) - (.setAttribute st "roomkey" (room :key)) + ;; (.setAttribute st "json_tags" json-tags) + (if (default-room? roomkey) + (.setAttribute st "roomkey" "") + (.setAttribute st "roomkey" (str roomkey "."))) (.setAttribute st "roomname" (room :name)) (.setAttribute st "debug_log_items" (logger)) (.toString st))) (defn validated-log [session room-key offset params] - (if (validate-room-access room-key session) - (log session (lookup-room room-key) offset params) - (resp-error "UNKNOWN_ROOM"))) + (let [room-key (if (= (lower-case room-key) "www") "dumpfm" room-key)] + (if (validate-room-access room-key session) + (log session (lookup-room room-key) offset params) + (resp-error "UNKNOWN_ROOM")))) ;; Tags @@ -972,12 +982,13 @@ ORDER BY msg_count DESC") (GET "http://:sub.dump.fm/" (validated-chat session (params :sub) "chat")) (GET "http://:sub.dump.fm/chat" (validated-chat session (params :sub) "chat")) (GET "/:room/chat" (validated-chat session (params :room) "chat")) - (GET "/chat" (validated-chat session "dumpfm" "chat")) - (GET "/chat/:t" (validated-chat session "dumpfm" (params :t))) + (GET "/chat" (validated-chat session *default-room* "chat")) + (GET "/chat/:t" (validated-chat session *default-room* (params :t))) (GET "http://:sub.dump.fm/log" (validated-log session (params :sub) "0" params)) - (GET "http://:sub.dump.fm/log/:offset" (validated-log session (params :room) (params :offset) params)) - (GET "/log" (validated-log session "dumpfm" "0" params)) + (GET "http://:sub.dump.fm/log/:offset" (validated-log session (params :sub) (params :offset) params)) + (GET "/log" (validated-log session *default-room* "0" params)) + (GET "/log/:offset" (validated-log session *default-room* (params :offset) params)) (GET "/:room/log" (validated-log session (params :room) "0" params)) (GET "/:room/log/:offset" (validated-log session (params :room) (params :offset) params)) -- cgit v1.2.3-70-g09d2