mirror of
https://codeberg.org/librarian/feeds
synced 2024-12-06 19:16:24 +01:00
fix some simple atom feed stuff and add some simple feed tests
This commit is contained in:
@@ -79,12 +79,16 @@ func newAtomEntry(i *Item) *atomEntry {
|
||||
}
|
||||
|
||||
func (a *Atom) FeedXml() interface{} {
|
||||
ts := a.Updated
|
||||
if ts.IsZero() {
|
||||
ts = a.Created
|
||||
}
|
||||
feed := &atomFeed{
|
||||
Ns: ns,
|
||||
Title: a.Title,
|
||||
Link: &atomLink{Href: a.Link.Href, Rel: a.Link.Rel},
|
||||
Id: a.Link.Href,
|
||||
Updated: a.Updated.Format(time.RFC3339)}
|
||||
Updated: ts.Format(time.RFC3339)}
|
||||
for _, e := range a.Items {
|
||||
feed.Entries = append(feed.Entries, newAtomEntry(e))
|
||||
}
|
||||
|
||||
@@ -29,12 +29,12 @@ type Item struct {
|
||||
type Feed struct {
|
||||
Title string
|
||||
Link *Link
|
||||
Author *Author
|
||||
Created time.Time
|
||||
Updated time.Time
|
||||
Description string
|
||||
Subtitle string
|
||||
Author *Author
|
||||
Updated time.Time
|
||||
Id string
|
||||
Subtitle string
|
||||
Created time.Time
|
||||
Items []*Item
|
||||
}
|
||||
|
||||
@@ -48,10 +48,11 @@ type XmlFeed interface {
|
||||
|
||||
func ToXML(feed XmlFeed) (string, error) {
|
||||
x := feed.FeedXml()
|
||||
data, err := xml.MarshalIndent(x, " ", " ")
|
||||
data, err := xml.MarshalIndent(x, "", " ")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
// strip empty line from default xml header
|
||||
s := xml.Header[:len(xml.Header)-1] + string(data)
|
||||
return s, nil
|
||||
}
|
||||
|
||||
@@ -1 +1,19 @@
|
||||
package syndicate
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestFeed(t *testing.T) {
|
||||
feed := &Feed{
|
||||
Title: "jmoiron.net blog",
|
||||
Link: &Link{Href: "http://jmoiron.net/blog"},
|
||||
Description: "discussion about tech, footie, photos",
|
||||
Author: &Author{"Jason Moiron", "jmoiron@jmoiron.net"},
|
||||
Created: time.Now(),
|
||||
}
|
||||
|
||||
fmt.Println(feed.ToAtom())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user