Add serializing RSS items and change NewFeed to New
parent
389bda7d40
commit
1884fda442
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
17
rss/item.go
17
rss/item.go
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue