Missing handlers but there we goddamn GO

Former-commit-id: 2505146a54acaf18eadfdebf1dd2720889aef795
This commit is contained in:
bel
2019-06-22 16:23:27 -06:00
parent 093d468f87
commit 35b3ff2c2d
24 changed files with 216 additions and 37 deletions

View File

@@ -53,7 +53,7 @@ func (f *Feed) Load() error {
return f.Decode(b)
}
func (f *Feed) pull() error {
func (f *Feed) Pull() error {
if f.URL == "" {
if err := f.Load(); err != nil {
return err

View File

@@ -107,7 +107,7 @@ func TestRSSFeedPull(t *testing.T) {
log.SetOutput(bytes.NewBuffer(nil))
defer log.SetOutput(os.Stderr)
if err := f.pull(); err != nil {
if err := f.Pull(); err != nil {
t.Fatal(err)
}
log.SetOutput(os.Stderr)
@@ -129,7 +129,7 @@ func TestRSSFeedPull(t *testing.T) {
log.SetOutput(bytes.NewBuffer(nil))
defer log.SetOutput(os.Stderr)
if err := f.pull(); err != nil {
if err := f.Pull(); err != nil {
t.Fatal(err)
}
log.SetOutput(os.Stderr)

View File

@@ -22,6 +22,8 @@ type Item struct {
TS time.Time
}
type Items []*Item
func newItem(i *gofeed.Item, contentFilter string) (*Item, error) {
item := &Item{
Title: i.Title,
@@ -88,3 +90,17 @@ func (i *Item) Load(key, ns1 string, ns ...string) error {
}
return config.Decode(b, i)
}
func (is Items) Len() int {
return len(is)
}
func (is Items) Less(i, j int) bool {
return is[j].TS.Before(is[i].TS)
}
func (is Items) Swap(i, j int) {
k := is[i]
is[i] = is[j]
is[j] = k
}

View File

@@ -32,7 +32,7 @@ func (rss *RSS) Run() error {
func (rss *RSS) update(item *monitor.Item) error {
f := newFeed(item.Key)
if err := f.pull(); err != nil {
if err := f.Pull(); err != nil {
return err
}
if err := f.save(); err != nil {

View File

@@ -1,8 +1,10 @@
package rss
import (
"fmt"
"io"
"local/rssmon3/config"
"sort"
"github.com/gorilla/feeds"
)
@@ -29,6 +31,7 @@ func TaggedFeeds(tag string) ([]*Feed, error) {
}
func WriteFeed(w io.Writer, tag string, items []*Item) error {
sort.Sort(Items(items))
feed := &feeds.Feed{
Title: tag,
Link: &feeds.Link{},
@@ -47,6 +50,6 @@ func WriteFeed(w io.Writer, tag string, items []*Item) error {
if err != nil {
return err
}
w.Write([]byte(s))
fmt.Fprintf(w, "%s\n", s)
return nil
}

View File

@@ -50,7 +50,7 @@ func TestRSSWriteFeed(t *testing.T) {
log.SetOutput(bytes.NewBuffer(nil))
defer log.SetOutput(os.Stderr)
if err := f.pull(); err != nil {
if err := f.Pull(); err != nil {
t.Fatal(err)
}
log.SetOutput(os.Stderr)