fix some simple atom feed stuff and add some simple feed tests

This commit is contained in:
Jason Moiron
2013-01-15 17:46:06 -05:00
parent 4e6bcdd4bb
commit cc91ea60d1
3 changed files with 29 additions and 6 deletions
+5 -1
View File
@@ -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))
}
+6 -5
View File
@@ -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
}
+18
View File
@@ -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())
}