summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-04-24 01:35:46 -0400
committersostler <sbostler@gmail.com>2010-04-24 01:35:46 -0400
commit48ac47f6188f6a6cfe52d7123e4abcc309dc0a4c (patch)
tree3c34bd752e58c89e30253e949f4bc0769ca8d008
parent955ae988565f2bd4fe1b5491a36e8dfdf2b0193a (diff)
Cleaned up login-token parsing, is_image, and removed id function
-rw-r--r--src/site.clj39
1 files changed, 20 insertions, 19 deletions
diff --git a/src/site.clj b/src/site.clj
index 2915d43..6cd82f9 100644
--- a/src/site.clj
+++ b/src/site.clj
@@ -71,9 +71,6 @@
;; Utils
-(defn id [x]
- x)
-
(defn open-file [dir-comps filename]
(let [d (str-join (System/getProperty "file.separator")
(cons *root-directory* dir-comps))
@@ -214,14 +211,14 @@
(do-select [query nick *dumps-per-page* offset]))))
-(defn fetch-public-message-by-id [id]
+(defn fetch-public-message-by-id [m-id]
(let [query "SELECT m.content, m.created_on, m.user_id, u.nick, u.avatar
FROM messages m, users u, rooms r
WHERE m.user_id = u.user_id
AND r.room_id = m.room_id
AND r.admin_only = false
AND m.message_id = ?"]
- (first (do-select [query (maybe-parse-int id -1)]))))
+ (first (do-select [query (maybe-parse-int m-id -1)]))))
(defn build-room-map-from-db [room-db]
{:admin_only (room-db :admin_only)
@@ -276,9 +273,10 @@
;; login-token functions
(defn logged-in?
- "Test whether user is logged in by presence of nick key in session."
- [request]
- (contains? (request :session) :nick))
+ "Test whether user is logged in by presence of nick key in session.
+ (Apply to request map)"
+ [{session :session}]
+ (contains? session :nick))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Login-token version history
@@ -296,15 +294,19 @@
(let [token-hash (sha1-hash hash expiry)]
(str "v1%" nick "%" expiry "%" token-hash)))
+(defn- parse-login-vec [v]
+ (try [(aget v 1) (Long/parseLong (aget v 2)) (aget v 3)]
+ (catch NumberFormatException _ nil)))
+
(defn parse-login-token [token]
- ; Users can have multiple login-cookies across different domains
- ; (i.e. "dump.fm" and ".dump.fm")
+ ; If users have multiple login-cookies across different domains
+ ; (i.e. both "dump.fm" and ".dump.fm"), token will be a vector
+ ; instead of a string.
(if (not (string? token))
(some identity (map parse-login-token token))
- (let [x (.split token "\\%")]
- (if (and (= (alength x) 4) (= (aget x 0) "v1"))
- (try [(aget x 1) (Long/parseLong (aget x 2)) (aget x 3)]
- (catch NumberFormatException _ nil))))))
+ (let [v (.split token "\\%")]
+ (if (and (= (alength v) 4) (= (aget v 0) "v1"))
+ (parse-login-vec v)))))
(defn read-login-token [token]
(if-let [[nick expiry token-hash] (parse-login-token token)]
@@ -595,8 +597,6 @@
(.setAttribute st "timestamp" now)
(.toString st)))
-
-
(defn validated-chat [session room-key template]
(if (validate-room-access room-key session)
(chat session (lookup-room room-key) template)
@@ -630,10 +630,11 @@
(defn strip-params [s]
(.replaceFirst s "\\?.*$" ""))
+; TODO: is-image? has *long* been broken wrt messages w/ multiple image links.
+
(defn is-image? [content]
- (if (and (re-find single-url-regex content)
- (re-find pic-regex (strip-params content)))
- true false))
+ (boolean (and (re-find single-url-regex content)
+ (re-find pic-regex (strip-params content)))))
(defn msg-db [user-id room-id content]
(let [is-image (is-image? content)