diff options
Diffstat (limited to 'home/src/rss.clj')
| -rw-r--r-- | home/src/rss.clj | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/home/src/rss.clj b/home/src/rss.clj new file mode 100644 index 0000000..6a8072e --- /dev/null +++ b/home/src/rss.clj @@ -0,0 +1,45 @@ +(ns rss + (:require [clojure.data.xml :as xml]) + (:import [java.time ZonedDateTime ZoneId] + [java.time.format DateTimeFormatter])) + +(def title "Jake's Blog") + +(defn fmt [year month day zone] + (.format (ZonedDateTime/of year month day 0 0 0 0 (ZoneId/of zone)) (DateTimeFormatter/ISO_OFFSET_DATE_TIME))) + +(defn entries [] + (sorted-map + [2025 10 8 "America/New_York"] + {:title "Quotes from The Second Sex" + :path "second-sex-quotes" + :summary "My favorite quotes from Simone de Beauvior's \"The Second Sex\""})) + +(defn feed [] + (xml/element + :feed {:xmlns "http://www.w3.org/2005/Atom"} + (xml/element :id {} "https://www.jakezerrer.com/feed.atom") + (xml/element :title {} title) + ;; TODO: Updated + (xml/element :updated {} (apply fmt (first (last (entries))))) + (xml/element + :author + {} + (xml/element :name {} "Jake Zerrer")) + (xml/element :link {:rel "self" :href "https://www.jakezerrer.com/feed.atom"}) + (for [[updated {:keys [title path summary]}] (entries)] + (let [[year month day zone] updated] + (xml/element + :entry + {} + (xml/element :id {} (str "https://www.jakezerrer.com/" path)) + (xml/element :title {} title) + (xml/element :updated {} (fmt year month day zone)) + (xml/element :link {:rel "alternate" :href (str "https://www.jakezerrer.com/" path)}) + (xml/element :summary {} summary)))))) + +(defn emit [] + (xml/emit-str (feed))) + +(comment + (emit)) |
