locator/feed/feed.go

56 lines
817 B
Go

package feed
import (
"time"
"github.com/mmcdole/gofeed"
)
type Entry struct {
Title string
Link string
Published time.Time
Categories []string
}
func EntryFromFeed(item *gofeed.Item) *Entry {
t := time.Now()
if item.UpdatedParsed != nil {
t = *item.UpdatedParsed
}
e := &Entry{
Title: item.Title,
Link: item.Link,
Published: t,
Categories: item.Categories,
}
return e
}
type Feed struct {
Title string
Link string
Updated time.Time
Entries []*Entry
}
func NewFromFeed(feed *gofeed.Feed) *Feed {
t := time.Now()
if feed.UpdatedParsed != nil {
t = *feed.UpdatedParsed
}
f := &Feed{
Title: feed.Title,
Link: feed.Link,
Updated: t,
}
for _, item := range feed.Items {
f.Entries = append(f.Entries, EntryFromFeed(item))
}
return f
}