diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2968031 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/lib/ +/feedparser-clj-0.3.jar +/pom.xml diff --git a/project.clj b/project.clj index 6080f48..366795b 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject feedparser-clj "0.2" +(defproject org.clojars.vgeshel/feedparser-clj "0.3" :description "Parse RSS/Atom feeds with a simple, clojure-friendly API." :dependencies [[org.clojure/clojure "1.2.1"] [org.clojure/clojure-contrib "1.2.0"] diff --git a/src/feedparser_clj/core.clj b/src/feedparser_clj/core.clj index 854a236..8c776ff 100644 --- a/src/feedparser_clj/core.clj +++ b/src/feedparser_clj/core.clj @@ -82,16 +82,22 @@ :title (.getTitle f) :uri (.getUri f))) -(defn parse-feed "Get and parse a feed from a URL" - [feedurl] +(defn- parse-internal [xmlreader] (let [feedinput (new SyndFeedInput) - xmlreader (new XmlReader (new URL feedurl)) syndfeed (.build feedinput xmlreader)] (make-feed syndfeed))) +(defn parse-feed "Get and parse a feed from a URL" + ([feedsource] + (parse-internal (new XmlReader (if (string? feedsource) + (URL. feedsource) + feedsource)))) + ([feedsource content-type] + (parse-internal (new XmlReader feedsource content-type)))) + (defn -main "Show basic information for a feed, given a URL" - [feedurl] - (println "Using feed:" feedurl) - (let [myfeed (parse-feed feedurl)] + [feedsource] + (println "Using feed:" feedsource) + (let [myfeed (parse-feed feedsource)] (println "Found" (count (:entries myfeed)) "entries") - (println myfeed))) \ No newline at end of file + (println myfeed)))