From fb59e286b7f44fb02f7ef13f1a12c4cfdf63da31 Mon Sep 17 00:00:00 2001 From: Marcin Wyszynski Date: Thu, 14 Mar 2013 23:25:13 +0000 Subject: [PATCH 1/3] added conversion to utf8 --- rss.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/rss.go b/rss.go index 2bb8f05..47bcc32 100644 --- a/rss.go +++ b/rss.go @@ -5,9 +5,10 @@ package rss import ( "encoding/xml" - "io/ioutil" "net/http" "time" + + "code.google.com/p/go-charset/charset" ) type Channel struct { @@ -39,7 +40,8 @@ type Item struct { type Date string func (self Date) Parse() (time.Time, error) { - t, err := time.Parse("Mon, 02 Jan 2006 15:04:05 -0700", string(self)) // Wordpress format + // Wordpress format + t, err := time.Parse("Mon, 02 Jan 2006 15:04:05 -0700", string(self)) if err != nil { t, err = time.Parse(time.RFC822, string(self)) // RSS 2.0 spec } @@ -67,20 +69,16 @@ func Read(url string) (*Channel, error) { if err != nil { return nil, err } - defer response.Body.Close() - text, err := ioutil.ReadAll(response.Body) - if err != nil { - return nil, err - } + xmlDecoder := xml.NewDecoder(response.Body) + xmlDecoder.CharsetReader = charset.NewReader var rss struct { Channel Channel `xml:"channel"` } - err = xml.Unmarshal(text, &rss) + err = xmlDecoder.Decode(&rss) if err != nil { return nil, err } - return &rss.Channel, nil } From d2a434bccdd720c698dd4cf34a8ec562d1b632cf Mon Sep 17 00:00:00 2001 From: Marcin Wyszynski Date: Thu, 14 Mar 2013 23:29:24 +0000 Subject: [PATCH 2/3] add charset data --- rss.go | 1 + 1 file changed, 1 insertion(+) diff --git a/rss.go b/rss.go index 47bcc32..a37ff81 100644 --- a/rss.go +++ b/rss.go @@ -9,6 +9,7 @@ import ( "time" "code.google.com/p/go-charset/charset" + import _ "code.google.com/p/go-charset/data" ) type Channel struct { From 86cd61bf8a6dabf449bbea6c980045a730285b71 Mon Sep 17 00:00:00 2001 From: Marcin Wyszynski Date: Thu, 14 Mar 2013 23:32:01 +0000 Subject: [PATCH 3/3] fix wrong import --- rss.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rss.go b/rss.go index a37ff81..27554dc 100644 --- a/rss.go +++ b/rss.go @@ -9,7 +9,7 @@ import ( "time" "code.google.com/p/go-charset/charset" - import _ "code.google.com/p/go-charset/data" + _ "code.google.com/p/go-charset/data" ) type Channel struct {