summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-02-01 20:55:02 -0500
committersostler <sbostler@gmail.com>2010-02-01 20:55:02 -0500
commit997e7ae94a7b7348a7d3c53a41ed0e772c1ed136 (patch)
tree63ae214d39c2bd5f746050607eea376445513331
parent25ae76ebea27c341830060d9dd4ba14fc6e069ce (diff)
Refactored uploading; added VIP validations
-rwxr-xr-xsrc/site.clj42
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]