commit - c4a56c0a8e7accfd981a9b7b19515d5f3302c278
commit + 5f9e6325936e158cd3c8afcbd5005b278dc9a855
blob - 912e003542d1aca5a7f6acaf7e070ea812418ed8
blob + 4764ad87ee5f6482c61abe96e62f5e5ccb9c5bd7
--- rss/rss.go
+++ rss/rss.go
if err := d.DecodeElement(aux, &start); err != nil {
return err
}
- t, err := time.Parse(time.RFC1123Z, aux.PubDate)
- if err != nil {
- return err
- }
- ch.PubDate = t
- t, err = time.Parse(time.RFC1123Z, aux.LastBuildDate)
- if err != nil {
- return err
+ if aux.PubDate != "" {
+ t, err := time.Parse(time.RFC1123Z, aux.PubDate)
+ if err != nil {
+ return err
+ }
+ ch.PubDate = t
}
- ch.LastBuildDate = t
+ if aux.LastBuildDate != "" {
+ t, err := time.Parse(time.RFC1123Z, aux.LastBuildDate)
+ if err != nil {
+ return err
+ }
+ ch.LastBuildDate = t
+ }
+
return nil
}
if err := d.DecodeElement(aux, &start); err != nil {
return err
}
- t, err := time.Parse(time.RFC1123Z, aux.PubDate)
- if err != nil {
- return err
+ if aux.PubDate != "" {
+ t, err := time.Parse(time.RFC1123Z, aux.PubDate)
+ if err != nil {
+ return err
+ }
+ it.PubDate = t
}
- it.PubDate = t
return nil
}
blob - 29868590b90b48eeb4158681a5840cb26c12e1ff
blob + f2cf2b7c74ea4e2ea0fe2d68bcaa70f6e51dfa26
--- rss/rss_test.go
+++ rss/rss_test.go
t.Errorf("Entry.Link: expected %q, got %q", "https://risky.biz/RBNEWS410/", item.Link)
}
}
+
+func TestEmpty(t *testing.T) {
+ f, err := os.Open("testdata/empty.xml")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer f.Close()
+ if _, err := Decode(f); err != nil {
+ t.Fatal(err)
+ }
+}
blob - /dev/null
blob + d1159eb153cd0c69b6e676c245e08d80345aff1c (mode 644)
--- /dev/null
+++ rss/testdata/empty.xml
+<rss version="2.0">
+ <channel>
+ <title></title>
+ <link>proto://</link>
+ <description></description>
+ <item>
+ <title></title>
+ </item>
+ </channel>
+</rss>