From 2f628f1139b6f55b4a401a59d5f6b84295af8785 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 6 Jul 2015 21:40:05 +0200 Subject: Initial import --- rss.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 rss.go diff --git a/rss.go b/rss.go new file mode 100644 index 0000000..02388ef --- /dev/null +++ b/rss.go @@ -0,0 +1,43 @@ +package rss + +import ( + "encoding/xml" + "io/ioutil" + "net/http" +) + +type RSS struct { + Version string `xml:"version,attr"` + Channel Channel `xml:"channel"` +} + +type Channel struct { + Link string `xml:"link"` + Language string `xml:"language"` + Title string `xml:"title"` + Description string `xml:"description"` + PubDate string `xml:"pubDate"` + Items []Item `xml:"item"` +} + +type Item struct { + Author string `xml:"author"` + Link string `xml:"link"` + GUID string `xml:"guid"` + Title string `xml:"title"` + PubDate string `xml:"pubDate"` +} + +func Fetch(url string) (rss RSS, err error) { + resp, err := http.Get(url) + if err != nil { + return rss, err + } + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + err = xml.Unmarshal(body, &rss) + if err != nil { + return rss, err + } + return rss, nil +} -- cgit v1.2.3