diff options
| author | sostler <sbostler@gmail.com> | 2010-02-01 20:55:02 -0500 |
|---|---|---|
| committer | sostler <sbostler@gmail.com> | 2010-02-01 20:55:02 -0500 |
| commit | 997e7ae94a7b7348a7d3c53a41ed0e772c1ed136 (patch) | |
| tree | 63ae214d39c2bd5f746050607eea376445513331 /src | |
| parent | 25ae76ebea27c341830060d9dd4ba14fc6e069ce (diff) | |
Refactored uploading; added VIP validations
Diffstat (limited to 'src')
| -rwxr-xr-x | src/site.clj | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/src/site.clj b/src/site.clj index e7d401f..3531f4a 100755 --- a/src/site.clj +++ b/src/site.clj @@ -386,7 +386,7 @@ (let [msg-id (msg-db user-id (room :room_id) content) msg (struct message-struct nick content now msg-id)] (dosync - (if (not (contains? @(room :users) nick)) + (if (not (contains? (ensure (room :users)) nick)) (login-user (user-struct-from-session session) room)) (add-message msg room)) (resp-success msg-id))))) @@ -456,29 +456,27 @@ subbed (re-gsub #"[^\w.-]" "" spaceless)] (str (System/currentTimeMillis) "-" subbed))) -;; TODO: enforce +(defn image-url-from-file [f] + (str-join "/" [*server-url* "images" (.getName f)])) -(defn upload [session params] - (if (not (session :nick)) - [404 "NOT_LOGGED_IN"] - (let [image (:image params) - filename (format-filename (:filename image)) - dest (File. (rel-join *image-directory* filename)) - image-url (str-join "/" [*server-url* "images" (.getName dest )])] - (copy (:tempfile image) dest) - (let [room (@rooms (params :room)) - msg-id (msg-db (session :user_id) (room :room_id) image-url) - now (new Date) - msg (struct message-struct (session :nick) image-url now msg-id)] - (dosync - (add-message msg room))) - [200 image-url]))) - -(defn validated-upload [session params] - (if (validate-room-access (params :room) session) - (upload session params) - (resp-error "UNKNOWN_ROOM"))) +(defn do-upload [session image room] + (let [filename (format-filename (:filename image)) + dest (File. (rel-join *image-directory* filename)) + url (image-url-from-file dest) + msg-id (msg-db (session :user_id) (room :room_id) url) + now (new Date) + msg (struct message-struct (session :nick) url now msg-id)] + (dosync + (add-message msg room)) + (copy (:tempfile image) dest) + [200 url])) +(defn upload [session params] + (let [room-key (params :room) + nick (session :nick)] + (cond (not nick) [200 "NOT_LOGGED_IN"] + (not (validate-room-access room-key session)) [200 "UNKNOWN_ROOM"] + :else (do-upload session (:image params) (@rooms room-key))))) ;; 404 (defn unknown-page [params] |
