Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (ns ciid.views.tweets
- (:require
- [ciid.views.common :as common]
- [ciid.config :as config]
- [ciid.dates :as dates]
- [clj-time.coerce :as cljtc]
- [com.ashafa.clutch :as couch]
- [noir.session :as session]
- [noir.response :as response])
- (:use
- [noir.core :only [defpage defpartial]]
- [hiccup.core :only [html escape-html]]))
- (defpage "/tweets" []
- (let[tweets (couch/get-view
- config/db
- "main" "all-tweets"
- {:startkey (dates/timestamp-array)
- :endkey [1970]
- :include_docs true
- :descending true
- :limit 100})]
- (common/layout
- [:h1 (count tweets) " recent public tweets"]
- (map common/tweet-item tweets))))
- (defpage "/tweets/new" []
- (common/layout
- [:form.form-stacked {:action "/tweets" :method "POST"}
- [:div.clearfix
- [:label {:for "text"} "Compose new message..."]
- [:textarea.span14 {:rows 3 :id "text" :name "text"}]]
- [:div.clearfix
- [:input.btn.primary {:type "submit" :value "Tweet!"}]]]))
- (defpage [:post "/tweets"]
- {:keys [text]}
- (let[tweet
- (couch/put-document
- config/db
- {:type "tweet"
- :user (:username (session/get :user))
- :text text
- :date_created (dates/timestamp-array)})]
- (response/redirect
- (str "/tweets/" (:_id tweet)))))
- (defpage [:get ["/tweets/:id" :id #"[0-9a-f]{32,32}"]]
- {:keys [id]}
- (if-let[tweet (couch/get-document config/db id)]
- (let[{:keys [text user date_created]} tweet]
- (common/layout
- [:div
- "On " (dates/format-daytime-array date_created) " "
- [:a {:href (str "/users/" (:user tweet))} (:user tweet)]
- " said..."]
- [:div.tweet-xl (:text tweet)]))))
- (defpartial make-tweet-xml
- [t]
- (let[{:keys[date_created text user]} (:doc t)
- date_created (dates/array-to-daytime date_created)
- date_created (cljtc/to-long date_created)]
- [:tweet
- [:date date_created]
- [:text (escape-html text)]
- [:user user]]))
- (defpage "/xml/tweets" []
- (let[tweets (couch/get-view
- config/db
- "main" "all-tweets"
- {:startkey (dates/timestamp-array)
- :endkey [1970]
- :include_docs true
- :descending true
- :limit 100})
- xml (reduce str (map make-tweet-xml tweets))]
- {:headers {"Content-Type" "text/xml; charset=utf-8"}
- :body (str "<?xml version=\"1.0\" encoding=\"UTF-8\"?><tweets>" xml "</tweets>")}))
Add Comment
Please, Sign In to add comment