parent
6f7ff06e3f
commit
37408af647
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"regexp"
|
"regexp"
|
||||||
"sort"
|
"sort"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/mmcdole/gofeed"
|
"github.com/mmcdole/gofeed"
|
||||||
|
|
@ -125,7 +126,7 @@ func (f *Feed) Items(limit int) ([]*Item, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Feed) List(limit int) ([]string, error) {
|
func (f *Feed) List(limit int) ([]string, error) {
|
||||||
keys, err := config.Values().DB.List([]string{nsItems, f.Key})
|
keys, err := config.Values().DB.List([]string{nsItems, f.Key}, " ", "}}}}}", strconv.Itoa(limit), "-")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -177,3 +177,37 @@ func TestRSSFeedPull(t *testing.T) {
|
||||||
t.Fatal(i)
|
t.Fatal(i)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRSSFeedListLimitedDescending(t *testing.T) {
|
||||||
|
initRSSFeed()
|
||||||
|
|
||||||
|
s := mockRSS()
|
||||||
|
defer s.Close()
|
||||||
|
|
||||||
|
f := newFeed("key")
|
||||||
|
f.TitleFilter = "50."
|
||||||
|
f.ContentFilter = "b"
|
||||||
|
f.Tags = []string{"c"}
|
||||||
|
f.URL = s.URL
|
||||||
|
|
||||||
|
log.SetOutput(bytes.NewBuffer(nil))
|
||||||
|
defer log.SetOutput(os.Stderr)
|
||||||
|
if err := f.Pull(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
log.SetOutput(os.Stderr)
|
||||||
|
|
||||||
|
itemKeys, err := f.List(5)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if len(itemKeys) != 5 {
|
||||||
|
t.Fatal(len(itemKeys))
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := range itemKeys {
|
||||||
|
if i > 0 && itemKeys[i] > itemKeys[i-1] {
|
||||||
|
t.Error(itemKeys[i], ">", itemKeys[i-1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -50,6 +51,10 @@ func (s *Server) tag(w http.ResponseWriter, r *http.Request) {
|
||||||
s.notFound(w, r)
|
s.notFound(w, r)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
limit, err := strconv.Atoi(r.URL.Query().Get("n"))
|
||||||
|
if err != nil {
|
||||||
|
limit = 20
|
||||||
|
}
|
||||||
tag := regexp.MustCompile("^.*\\/").ReplaceAllString(r.URL.Path, "")
|
tag := regexp.MustCompile("^.*\\/").ReplaceAllString(r.URL.Path, "")
|
||||||
feeds, err := rss.TaggedFeeds(tag)
|
feeds, err := rss.TaggedFeeds(tag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -58,7 +63,7 @@ func (s *Server) tag(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
items := []*rss.Item{}
|
items := []*rss.Item{}
|
||||||
for _, feed := range feeds {
|
for _, feed := range feeds {
|
||||||
feedItems, err := feed.Items(20)
|
feedItems, err := feed.Items(limit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.error(w, r, err)
|
s.error(w, r, err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue