summaryrefslogtreecommitdiff
path: root/src/mulk/benki/feed.clj
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2012-04-14 23:41:35 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2012-04-14 23:53:54 +0200
commit0d0f566f3e70214582ba0036f6fe53d141b60eb5 (patch)
tree8fa89977137c46b43a089a3547100ea9912ede0e /src/mulk/benki/feed.clj
parenteb8fc654ec350d17f2ebc8164c9e6e70adc29d28 (diff)
Refactor news feed generation.
Diffstat (limited to 'src/mulk/benki/feed.clj')
-rw-r--r--src/mulk/benki/feed.clj49
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)))