From e60e0ba3c4ca72701dab4f9142322b623ed6f10c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Guillot?= Date: Sun, 21 Mar 2021 10:52:27 -0700 Subject: [PATCH] Add workaround to handle some invalid dates --- reader/atom/atom_03.go | 16 ++++++++-------- reader/date/parser.go | 2 ++ reader/date/parser_test.go | 2 ++ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/reader/atom/atom_03.go b/reader/atom/atom_03.go index 36fbb12c..d10d5cc8 100644 --- a/reader/atom/atom_03.go +++ b/reader/atom/atom_03.go @@ -144,10 +144,10 @@ func (a *atom03Entry) entryHash() string { } type atom03Text struct { - Type string `xml:"type,attr"` - Mode string `xml:"mode,attr"` - Data string `xml:",chardata"` - XML string `xml:",innerxml"` + Type string `xml:"type,attr"` + Mode string `xml:"mode,attr"` + CharData string `xml:",chardata"` + InnerXML string `xml:",innerxml"` } func (a *atom03Text) String() string { @@ -155,16 +155,16 @@ func (a *atom03Text) String() string { switch { case a.Mode == "xml": - content = a.XML + content = a.InnerXML case a.Mode == "escaped": - content = a.Data + content = a.CharData case a.Mode == "base64": - b, err := base64.StdEncoding.DecodeString(a.Data) + b, err := base64.StdEncoding.DecodeString(a.CharData) if err == nil { content = string(b) } default: - content = a.Data + content = a.CharData } if a.Type != "text/html" { diff --git a/reader/date/parser.go b/reader/date/parser.go index 3804cf2f..04826daa 100644 --- a/reader/date/parser.go +++ b/reader/date/parser.go @@ -293,6 +293,8 @@ var invalidLocalizedDateReplacer = strings.NewReplacer( "mai ", "May ", "jui ", "Jun ", "juin ", "June ", + "Thurs,", "Thu,", + "Thur,", "Thu,", ) // Parse parses a given date string using a large diff --git a/reader/date/parser_test.go b/reader/date/parser_test.go index 3355a19c..f1d68179 100644 --- a/reader/date/parser_test.go +++ b/reader/date/parser_test.go @@ -178,6 +178,8 @@ func TestParseWeirdDateFormat(t *testing.T) { "2018-10-23 04:07:42 +00:00", "5 August, 2019", "mar., 01 déc. 2020 16:11:02 +0000", + "Thurs, 15 Oct 2020 00:00:39 +0000", + "Thur, 19 Nov 2020 00:00:39 +0000", } for _, date := range dates {