diff options
Diffstat (limited to 'src/site.clj')
| -rw-r--r-- | src/site.clj | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/site.clj b/src/site.clj index ebf2077..57f9bb1 100644 --- a/src/site.clj +++ b/src/site.clj @@ -94,6 +94,9 @@ ;; Room handling +(defn lookup-room [key] + (@rooms (lower-case key))) + (defn fetch-rooms [] (do-select ["SELECT * FROM ROOMS"])) @@ -362,6 +365,7 @@ (defn profile [session profile-nick offset] (if-let [user-info (fetch-nick profile-nick)] (let [st (fetch-template "profile" session) + profile-nick (:nick user-info) nick (session :nick) logger (make-time-logger) is-home (and nick (= nick profile-nick)) @@ -528,7 +532,7 @@ (dosync (ref-set (room :topic) nil))) (defn validate-set-topic [session params] - (let [room (@rooms (params :room)) + (let [room (lookup-room (params :room)) topic (params :topic) deadline (params :deadline) maker (params :maker)] @@ -542,7 +546,7 @@ (resp-success "OK"))))) (defn validate-end-topic [session params] - (let [room (@rooms (params :room))] + (let [room (lookup-room (params :room))] (cond (not (is-vip? :is_admin)) (resp-error "NOT_VIP") (not room) (resp-error "INVALID_ROOM") :else (do @@ -552,12 +556,11 @@ ;; Chat (defn validate-room-access [room-key session] - (let [room (@rooms room-key)] + (let [room (lookup-room room-key)] (and room (or (not (room :admin_only)) (is-vip? session))))) -;; 3/20/10: add template so multiple chat urls for ryder (defn chat [session room template] (let [now (System/currentTimeMillis) nick (session :nick) @@ -580,9 +583,11 @@ (.setAttribute st "timestamp" now) (.toString st))) + + (defn validated-chat [session room-key template] (if (validate-room-access room-key session) - (chat session (@rooms room-key) template) + (chat session (lookup-room room-key) template) (resp-error "UNKNOWN_ROOM"))) (defn refresh [session params room] @@ -601,7 +606,7 @@ (defn validated-refresh [session params] (let [room-key (params :room) - room (@rooms room-key)] + room (lookup-room room-key)] (if (validate-room-access room-key session) (refresh session params room) (resp-error "UNKNOWN_ROOM")))) @@ -630,7 +635,7 @@ (let [user-id (session :user_id) nick (session :nick) room-key (params :room) - room (@rooms room-key) + room (lookup-room room-key) content (.trim (params :content)) now (new Date)] (cond (not room) (resp-error "BAD_ROOM") @@ -652,7 +657,7 @@ ;; Browser (defn browser [session] - (let [room (@rooms "dumpfm") + (let [room (lookup-room "dumpfm") now (System/currentTimeMillis) nick (session :nick) st (fetch-template "browser" session)] @@ -703,7 +708,7 @@ (defn validated-log [session room-key offset params] (if (validate-room-access room-key session) - (log session (@rooms room-key) offset params) + (log session (lookup-room room-key) offset params) (resp-error "UNKNOWN_ROOM"))) ;; Tags @@ -881,7 +886,7 @@ (cond (not nick) [200 "NOT_LOGGED_IN"] (not image) [200 "INVALID_REQUEST"] (not (validate-room-access room-key session)) [200 "UNKNOWN_ROOM"] - :else (do-upload session image (@rooms room-key))))) + :else (do-upload session image (lookup-room room-key))))) ;; N.B. -- Upload responses aren't JSON-evaluated (defn do-upload-avatar [session image] @@ -1022,8 +1027,8 @@ (dosync (doseq [room-db (fetch-rooms)] - (alter rooms assoc (room-db :key) - (build-room-map-from-db room-db)))) + (alter rooms assoc (lower-case (room-db :key)) + (build-room-map-from-db room-db)))) (defn start-server [port] (run-server {:port port} |
