summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rss.go18
1 files changed, 10 insertions, 8 deletions
diff --git a/rss.go b/rss.go
index c9413b2..a6f2de8 100644
--- a/rss.go
+++ b/rss.go
@@ -3,6 +3,7 @@ package rss
import (
"encoding/xml"
+ "errors"
"net/http"
"strings"
"time"
@@ -41,22 +42,23 @@ type Item struct {
PubDate Time `xml:"pubDate"`
}
-const altFormat = `Mon, 2 Jan 2006 15:04:05 -0700`
+var formats = []string{
+ `Mon, _2 Jan 2006 15:04:05 -0700`, // like RFC1123Z
+ `Mon, _2 Jan 2006 15:04:05 MST`, // like RFC1123
+}
// UnmarshalXML decodes Time format
func (t *Time) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
var v string
d.DecodeElement(&v, &start)
v = strings.TrimSpace(v)
- parse, err := time.Parse(time.RFC1123, v)
- if err != nil {
- parse, err = time.Parse(altFormat, v)
- if err != nil {
- return err
+ for _, f := range formats {
+ if parse, err := time.Parse(f, v); err == nil {
+ *t = Time{parse}
+ return nil
}
}
- *t = Time{parse}
- return nil
+ return errors.New(v)
}
// Fetch and parse RSS from given URL