summaryrefslogtreecommitdiff
path: root/src/mulk/benki/feed.clj
blob: 35f0861f87fefcf60d4abdbcb468e9868c751184 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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 (fn [feed item] (type item)))

(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)))