morning-coffee/rss.go

43 lines
817 B
Go
Raw Normal View History

package main
import (
"encoding/xml"
)
type Document struct {
Channel Channel `xml:"channel"`
}
type Item struct {
Title string `xml:"title"`
Link string `xml:"link"`
Description string `xml:"description"`
PublishedDate string `xml:"pubDate"`
}
type Channel struct {
Title string `xml:"title"`
Description string `xml:"description"`
Items []Item `xml:"item"`
}
func (c Channel) ItemsToLinks() []Link {
formattedItems := []Link{}
for _, feedItem := range c.Items {
formattedItems = append(formattedItems, Link{Url: feedItem.Link, Title: feedItem.Title, PublishedDate: feedItem.PublishedDate})
}
return formattedItems
}
func ParseFeed(raw []byte) Document {
var doc Document
if err := xml.Unmarshal(raw, &doc); err != nil {
return Document{}
}
return doc
}