diff options
author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2012-04-14 23:41:35 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2012-04-14 23:53:54 +0200 |
commit | 0d0f566f3e70214582ba0036f6fe53d141b60eb5 (patch) | |
tree | 8fa89977137c46b43a089a3547100ea9912ede0e /src/mulk/benki/feed.clj | |
parent | eb8fc654ec350d17f2ebc8164c9e6e70adc29d28 (diff) |
Refactor news feed generation.
Diffstat (limited to 'src/mulk/benki/feed.clj')
-rw-r--r-- | src/mulk/benki/feed.clj | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/mulk/benki/feed.clj b/src/mulk/benki/feed.clj new file mode 100644 index 0000000..31125dd --- /dev/null +++ b/src/mulk/benki/feed.clj @@ -0,0 +1,49 @@ +(ns mulk.benki.feed + (:refer-clojure) + (:use [clojure repl] + [mulk.benki util config webutil]) + (:require [clojure.algo.monads :as m] + [clojure.string :as string] + [hiccup.core]) + (:import [org.apache.abdera Abdera])) + + +(defonce abdera (Abdera.)) + + +(defmulti feed-add-entry #(type (second %))) + +(defmethod feed-add-entry :mulk.benki.book_marx/bookmark [feed item] + (doto (.addEntry feed) + (.setId (fmt nil "tag:~A,2012:/marx/~D" + (:tag-base benki-config) + (:id item))) + (.setTitle (:title item)) + (.setSummaryAsHtml (:html item)) + ;;(.setUpdated (:updated item)) + (.setPublished (:date item)) + ;;(.setAuthor (fmt nil "~A ~A" (:first_name item) (:last_name item))) + ;;(.addLink (link :marx (:id item))) + (.addLink (:uri item)))) + +(defmethod feed-add-entry :mulk.benki.lazychat/lazychat-message [feed item] + (doto (.addEntry feed) + (.setId (fmt nil "tag:~A,2012:/lafargue/~D" + (:tag-base benki-config) + (:id item))) + (.setSummaryAsHtml (sanitize-html (markdown->html (:content item)))) + (.setPublished (:date item)) + ;;(.setAuthor (fmt nil "~A ~A" (:first_name item) (:last_name item))) + ;;(.addLink (link :lafargue (:id item))) + )) + +(defn generate-feed [title last-updated tag link items] + (let [feed (doto (.newFeed abdera) + (.setId (fmt nil "tag:~A,2012:/~A" + (:tag-base @benki-config) + tag)) + (.setTitle title) + (.setUpdated last-updated) + (.addLink link))] + (doall (map #(feed-add-entry feed %) items)) + (.toString feed))) |