30 lines
689 B
Go
30 lines
689 B
Go
package rss
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
|
|
"github.com/gorilla/feeds"
|
|
)
|
|
|
|
func ToRSS(feed *Feed, items []*Item) (string, error) {
|
|
root := &feeds.Feed{
|
|
Title: feed.Title,
|
|
Link: &feeds.Link{Href: feed.Link},
|
|
Description: fmt.Sprintf("/%s/ /%s/", feed.ItemFilter, feed.ContentFilter),
|
|
Created: feed.Updated,
|
|
}
|
|
root.Items = make([]*feeds.Item, len(items))
|
|
for i := range items {
|
|
v := &url.Values{}
|
|
v.Add("url", feed.ID()+"."+items[i].ID())
|
|
root.Items[i] = &feeds.Item{
|
|
Title: items[i].Name,
|
|
Link: &feeds.Link{Href: "/api/feed/item?" + v.Encode()},
|
|
Description: items[i].Content,
|
|
Created: items[i].TS,
|
|
}
|
|
}
|
|
return root.ToRss()
|
|
}
|