30 lines
No EOL
729 B
Clojure
Executable file
30 lines
No EOL
729 B
Clojure
Executable file
(ns mastodon-bot.rss-api
|
|
(:require
|
|
[clojure.spec.alpha :as s]
|
|
[clojure.spec.test.alpha :as st]
|
|
[orchestra.core :refer-macros [defn-spec]]
|
|
["rss-parser" :as rss]
|
|
[mastodon-bot.infra :as infra]
|
|
))
|
|
|
|
(s/def ::feed (s/cat :name string? :url string?))
|
|
(s/def ::feeds (s/* ::feed))
|
|
(def rss-source? (s/keys :req-un [::feeds]))
|
|
|
|
(defn-spec rss-client any?
|
|
[]
|
|
(rss.))
|
|
|
|
(defn parse-feed [item]
|
|
(let [{:keys [title isoDate pubDate content link]} item]
|
|
{:created-at (js/Date. (or isoDate pubDate))
|
|
:text (str title
|
|
"\n\n"
|
|
link)}))
|
|
|
|
(defn-spec get-feed map?
|
|
[url string?
|
|
callback fn?]
|
|
(print url)
|
|
(-> (.parseURL (rss-client) url)
|
|
(.then callback))) |