diff options
Diffstat (limited to 'src/site.clj')
| -rw-r--r-- | src/site.clj | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/src/site.clj b/src/site.clj index ab7a17f..67fab63 100644 --- a/src/site.clj +++ b/src/site.clj @@ -4,12 +4,13 @@ java.util.Date java.io.File javax.imageio.ImageIO - javax.servlet.http.Cookie) + javax.servlet.http.Cookie + org.antlr.stringtemplate.StringTemplateGroup) (:use clojure.xml clojure.contrib.command-line clojure.contrib.duck-streams clojure.contrib.json.write - clojure.contrib.seq-utils + clojure.contrib.seq-utils clojure.contrib.sql clojure.contrib.str-utils clojure.contrib.def @@ -18,7 +19,7 @@ admin compojure email - fame + fame utils cookie-login session-sweeper @@ -650,8 +651,14 @@ order by count desc limit ? offset ?") (or (not (room :admin_only)) (is-vip? session)))) +(def default-room-template "chat") + +(defn lookup-room-template [session room-key template] + (or (fetch-template (str "rooms/" (or template room-key)) session) + (fetch-template (str "rooms/" default-room-template) session))) + (defn chat [session room template] - (if-let [st (fetch-template template session)] + (if-let [st (lookup-room-template session (:key room) template)] (let [now (System/currentTimeMillis) nick (session :nick) limit (if (:admin_only room) *vip-dumps-per-page* *dumps-per-page*) @@ -677,11 +684,13 @@ order by count desc limit ? offset ?") (.toString st)) [404 "UNKNOWN PAGE"])) -(defn validated-chat [session room-key template] - (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 validated-chat + ([session room-key] (validated-chat session room-key nil)) + ([session room-key template] + (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 @@ -754,9 +763,9 @@ order by count desc limit ? offset ?") ;; TODO: make work for all rooms (defn browser [session] (let [room (lookup-room *default-room*) - now (System/currentTimeMillis) - nick (session :nick) - st (fetch-template "browser" session)] + now (System/currentTimeMillis) + nick (session :nick) + st (fetch-template "browser" session)] (if nick (dosync (login-user (user-struct-from-session session) room))) @@ -1129,10 +1138,11 @@ order by count desc limit ? offset ?") (GET "/avatars/*" (serve-static *avatar-directory* (params :*)))) (defroutes pichat - (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 *default-room* "chat")) + (GET "http://:sub.dump.fm/" (validated-chat session (params :sub))) + (GET "http://:sub.dump.fm/chat" (validated-chat session (params :sub))) + (GET "http://:sub.dump.fm/chat" (validated-chat session (params :sub) (params :t))) + (GET "/:room/chat" (validated-chat session (params :room))) + (GET "/chat" (validated-chat session *default-room*)) (GET "/chat/:t" (validated-chat session *default-room* (params :t))) (GET "http://:sub.dump.fm/log" (validated-log session (params :sub) "0" params)) |
