diff options
| author | sostler <sbostler@gmail.com> | 2010-04-24 01:35:46 -0400 |
|---|---|---|
| committer | sostler <sbostler@gmail.com> | 2010-04-24 01:35:46 -0400 |
| commit | 48ac47f6188f6a6cfe52d7123e4abcc309dc0a4c (patch) | |
| tree | 3c34bd752e58c89e30253e949f4bc0769ca8d008 | |
| parent | 955ae988565f2bd4fe1b5491a36e8dfdf2b0193a (diff) | |
Cleaned up login-token parsing, is_image, and removed id function
| -rw-r--r-- | src/site.clj | 39 |
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) |
