Add serializing RSS items and change NewFeed to New

master
Bel LaPointe 2018-10-08 15:33:52 -06:00
parent 389bda7d40
commit 1884fda442
3 changed files with 19 additions and 2 deletions

View File

@ -35,7 +35,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 NewFeed(source, itemFilter, contentFilter string) (*Feed, []*Item, error) { func New(source, itemFilter, contentFilter string) (*Feed, []*Item, error) {
if _, err := regexp.Compile(itemFilter); err != nil { if _, err := regexp.Compile(itemFilter); err != nil {
return nil, nil, err return nil, nil, err
} }

View File

@ -31,7 +31,7 @@ func Test_RSSFeed(t *testing.T) {
}, },
} }
for _, c := range cases { for _, c := range cases {
feed, items, err := NewFeed(s.URL, c.itemFilter, c.contentFilter) feed, items, err := New(s.URL, c.itemFilter, c.contentFilter)
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)
} }

View File

@ -1,6 +1,8 @@
package rss package rss
import ( import (
"bytes"
"encoding/gob"
"fmt" "fmt"
"html" "html"
"io/ioutil" "io/ioutil"
@ -32,6 +34,21 @@ func (item *Item) ID() string {
return strings.Join(regexp.MustCompile("[a-zA-Z0-9]*").FindAllString(item.Link, -1), "_") return strings.Join(regexp.MustCompile("[a-zA-Z0-9]*").FindAllString(item.Link, -1), "_")
} }
func DeserializeItem(src []byte) (*Item, error) {
buffer := bytes.NewBuffer(src)
dec := gob.NewDecoder(buffer)
var dst Item
err := dec.Decode(&dst)
return &dst, err
}
func (item *Item) Serialize() ([]byte, error) {
var buffer bytes.Buffer
enc := gob.NewEncoder(&buffer)
err := enc.Encode(item)
return buffer.Bytes(), err
}
func fromGofeedItem(gfitem *gofeed.Item, filter string) *Item { func fromGofeedItem(gfitem *gofeed.Item, filter string) *Item {
item := &Item{ item := &Item{
Name: gfitem.Title, Name: gfitem.Title,