Add tags to rss struct

master
Bel LaPointe 2018-10-10 14:18:21 -06:00
parent 440ebcc54a
commit 03befc13d1
3 changed files with 12 additions and 6 deletions

View File

@ -32,7 +32,7 @@ func core() {
mon, err := monitor.New(func(url string) { mon, err := monitor.New(func(url string) {
feed, ok := allFeeds[url] feed, ok := allFeeds[url]
if !ok { if !ok {
f, err := rss.New(url, "", "", time.Minute) f, err := rss.New(url, "", "", nil, time.Minute)
if err != nil { if err != nil {
logger.Logf("cannot identify unknown feed triggered in monitor: %q: %v", url, err) logger.Logf("cannot identify unknown feed triggered in monitor: %q: %v", url, err)
return return
@ -85,8 +85,8 @@ func core() {
defer mon.Stop() defer mon.Stop()
server, err := server.New(config.Port, server, err := server.New(config.Port,
func(url string, itemFilter, contentFilter string, interval time.Duration) { func(url string, itemFilter, contentFilter string, tags []string, interval time.Duration) {
feed, err := rss.New(url, itemFilter, contentFilter, interval) feed, err := rss.New(url, itemFilter, contentFilter, tags, interval)
if err != nil { if err != nil {
logger.Logf("can't create new RSS %q: %v", url, err) logger.Logf("can't create new RSS %q: %v", url, err)
return return
@ -129,6 +129,9 @@ func core() {
} }
return item.Content, nil return item.Content, nil
}, },
func(tag string) (string, error) {
return "", errors.New("not implemented")
},
) )
if err != nil { if err != nil {
panic(err) panic(err)

View File

@ -17,6 +17,7 @@ type Feed struct {
Updated time.Time Updated time.Time
Title string Title string
Items []string Items []string
Tags []string
ItemFilter string ItemFilter string
ContentFilter string ContentFilter string
Link string Link string
@ -24,7 +25,7 @@ type Feed struct {
} }
func (feed *Feed) String() string { func (feed *Feed) String() string {
return fmt.Sprintf("Title: %s, Updated: %v, Items: %v, ItemFilter: %q, ContentFilter: %q, Link: %v, Interval: %s", return fmt.Sprintf("Title: %s, Updated: %v, Items: %v, ItemFilter: %q, ContentFilter: %q, Link: %v, Interval: %s, Tags: %v",
feed.Title, feed.Title,
feed.Updated.Local(), feed.Updated.Local(),
feed.Items, feed.Items,
@ -32,6 +33,7 @@ func (feed *Feed) String() string {
feed.ContentFilter, feed.ContentFilter,
feed.Link, feed.Link,
feed.Interval, feed.Interval,
feed.Tags,
) )
} }
@ -39,7 +41,7 @@ func (feed *Feed) ID() string {
return strings.Join(regexp.MustCompile("[a-zA-Z0-9]*").FindAllString(feed.Link, -1), "_") return strings.Join(regexp.MustCompile("[a-zA-Z0-9]*").FindAllString(feed.Link, -1), "_")
} }
func New(source, itemFilter, contentFilter string, interval time.Duration) (*Feed, error) { func New(source, itemFilter, contentFilter string, tags []string, interval time.Duration) (*Feed, error) {
if _, err := regexp.Compile(itemFilter); err != nil { if _, err := regexp.Compile(itemFilter); err != nil {
return nil, err return nil, err
} }
@ -51,6 +53,7 @@ func New(source, itemFilter, contentFilter string, interval time.Duration) (*Fee
ItemFilter: itemFilter, ItemFilter: itemFilter,
ContentFilter: contentFilter, ContentFilter: contentFilter,
Link: source, Link: source,
Tags: tags,
Interval: interval, Interval: interval,
} }
return f, nil return f, nil

View File

@ -32,7 +32,7 @@ func Test_RSSFeed(t *testing.T) {
}, },
} }
for _, c := range cases { for _, c := range cases {
feed, err := New(s.URL, c.itemFilter, c.contentFilter, time.Minute) feed, err := New(s.URL, c.itemFilter, c.contentFilter, nil, time.Minute)
if err != nil { if err != nil {
t.Errorf("couldn't create new feed %v: %v", feed, err) t.Errorf("couldn't create new feed %v: %v", feed, err)
} }