From 827683ab59131ec38ed7cfa268bcaa6dc77d1412 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Wed, 13 Dec 2017 20:16:15 -0800 Subject: Make sure that item URL are absolute --- reader/atom/atom.go | 15 ++++++++++----- reader/atom/parser_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 5 deletions(-) (limited to 'reader/atom') diff --git a/reader/atom/atom.go b/reader/atom/atom.go index f72a150..315961e 100644 --- a/reader/atom/atom.go +++ b/reader/atom/atom.go @@ -14,6 +14,7 @@ import ( "github.com/miniflux/miniflux/helper" "github.com/miniflux/miniflux/model" "github.com/miniflux/miniflux/reader/date" + "github.com/miniflux/miniflux/url" ) type atomFeed struct { @@ -70,10 +71,19 @@ func (a *atomFeed) Transform() *model.Feed { for _, entry := range a.Entries { item := entry.Transform() + entryURL, err := url.AbsoluteURL(feed.SiteURL, item.URL) + if err == nil { + item.URL = entryURL + } + if item.Author == "" { item.Author = getAuthor(a.Author) } + if item.Title == "" { + item.Title = item.URL + } + feed.Entries = append(feed.Entries, item) } @@ -89,11 +99,6 @@ func (a *atomEntry) Transform() *model.Entry { entry.Content = getContent(a) entry.Title = strings.TrimSpace(a.Title) entry.Enclosures = getEnclosures(a) - - if entry.Title == "" { - entry.Title = entry.URL - } - return entry } diff --git a/reader/atom/parser_test.go b/reader/atom/parser_test.go index 66ca0f0..be07383 100644 --- a/reader/atom/parser_test.go +++ b/reader/atom/parser_test.go @@ -152,6 +152,32 @@ func TestParseFeedURL(t *testing.T) { } } +func TestParseEntryWithRelativeURL(t *testing.T) { + data := ` + + Example Feed + + + + Test + + urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a + 2003-12-13T18:30:02Z + Some text. + + + ` + + feed, err := Parse(bytes.NewBufferString(data)) + if err != nil { + t.Error(err) + } + + if feed.Entries[0].URL != "http://example.org/something.html" { + t.Errorf("Incorrect entry URL, got: %s", feed.Entries[0].URL) + } +} + func TestParseEntryTitleWithWhitespaces(t *testing.T) { data := ` -- cgit v1.2.3