diff --git a/src/parser/atom.go b/src/parser/atom.go
index b943e62..5853ddc 100644
--- a/src/parser/atom.go
+++ b/src/parser/atom.go
@@ -23,7 +23,7 @@ type atomEntry struct {
Published string `xml:"published"`
Updated string `xml:"updated"`
Links atomLinks `xml:"link"`
- Content atomText `xml:"content"`
+ Content atomText `xml:"http://www.w3.org/2005/Atom content"`
media
}
diff --git a/src/parser/atom_test.go b/src/parser/atom_test.go
index d3aa05f..de94918 100644
--- a/src/parser/atom_test.go
+++ b/src/parser/atom_test.go
@@ -56,3 +56,24 @@ func TestAtom(t *testing.T) {
t.Fatal("invalid atom")
}
}
+
+func TestAtomClashingNamespaces(t *testing.T) {
+ have, err := Parse(strings.NewReader(`
+
+
+
+ atom content
+
+
+
+ `))
+ want := &Feed{Items: []Item{{Content: "atom content"}}}
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !reflect.DeepEqual(want, have) {
+ t.Logf("want: %#v", want)
+ t.Logf("have: %#v", have)
+ t.FailNow()
+ }
+}
diff --git a/src/parser/feed.go b/src/parser/feed.go
index ff7eb56..bbed1d4 100644
--- a/src/parser/feed.go
+++ b/src/parser/feed.go
@@ -46,11 +46,11 @@ func Parse(r io.Reader) (*Feed, error) {
lookup := make([]byte, 1024)
n, err := io.ReadFull(r, lookup)
switch {
- case err != nil:
- return nil, err
case err == io.ErrUnexpectedEOF:
lookup = lookup[:n]
r = bytes.NewReader(lookup)
+ case err != nil:
+ return nil, err
default:
r = io.MultiReader(bytes.NewReader(lookup), r)
}
diff --git a/src/parser/feed_test.go b/src/parser/feed_test.go
index df82f60..5b4f9d8 100644
--- a/src/parser/feed_test.go
+++ b/src/parser/feed_test.go
@@ -77,3 +77,18 @@ func TestParse(t *testing.T) {
t.Fatal("invalid content")
}
}
+
+func TestParseShortFeed(t *testing.T) {
+ have, err := Parse(strings.NewReader(
+ ``,
+ ))
+ want := &Feed{}
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !reflect.DeepEqual(want, have) {
+ t.Logf("want: %#v", want)
+ t.Logf("have: %#v", have)
+ t.FailNow()
+ }
+}
diff --git a/src/parser/media.go b/src/parser/media.go
index e6c5a71..b8e9712 100644
--- a/src/parser/media.go
+++ b/src/parser/media.go
@@ -12,13 +12,6 @@ type mediaGroup struct {
MediaDescriptions []mediaDescription `xml:"http://search.yahoo.com/mrss/ description"`
}
-type mediaContent struct {
- URL string `xml:"url,attr"`
- Type string `xml:"type,attr"`
- FileSize string `xml:"fileSize,attr"`
- Medium string `xml:"medium,attr"`
-}
-
type mediaThumbnail struct {
URL string `xml:"url,attr"`
}