diff options
author | Frédéric Guillot <fred@miniflux.net> | 2017-12-13 20:16:15 -0800 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2017-12-13 20:16:15 -0800 |
commit | 827683ab59131ec38ed7cfa268bcaa6dc77d1412 (patch) | |
tree | 8461fa67142378b050fde4ee39d393e18ab71aaf /reader/rdf | |
parent | 84d912c9794eaaef0f06638d9d23716f4e02b42f (diff) |
Make sure that item URL are absolute
Diffstat (limited to 'reader/rdf')
-rw-r--r-- | reader/rdf/parser_test.go | 25 | ||||
-rw-r--r-- | reader/rdf/rdf.go | 7 |
2 files changed, 31 insertions, 1 deletions
diff --git a/reader/rdf/parser_test.go b/reader/rdf/parser_test.go index 6447bf2..e025e53 100644 --- a/reader/rdf/parser_test.go +++ b/reader/rdf/parser_test.go @@ -266,6 +266,31 @@ func TestParseItemWithOnlyFeedAuthor(t *testing.T) { } } +func TestParseItemRelativeURL(t *testing.T) { + data := `<?xml version="1.0" encoding="utf-8"?> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/"> + <channel> + <title>Example</title> + <link>http://example.org</link> + </channel> + + <item> + <title>Title</title> + <description>Test</description> + <link>something.html</link> + </item> + </rdf:RDF>` + + 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 TestParseItemWithoutLink(t *testing.T) { data := `<?xml version="1.0" encoding="utf-8"?> diff --git a/reader/rdf/rdf.go b/reader/rdf/rdf.go index ad4d53a..3586f6e 100644 --- a/reader/rdf/rdf.go +++ b/reader/rdf/rdf.go @@ -12,6 +12,7 @@ import ( "github.com/miniflux/miniflux/helper" "github.com/miniflux/miniflux/model" "github.com/miniflux/miniflux/reader/sanitizer" + "github.com/miniflux/miniflux/url" ) type rdfFeed struct { @@ -29,13 +30,17 @@ func (r *rdfFeed) Transform() *model.Feed { for _, item := range r.Items { entry := item.Transform() - if entry.Author == "" && r.Creator != "" { entry.Author = sanitizer.StripTags(r.Creator) } if entry.URL == "" { entry.URL = feed.SiteURL + } else { + entryURL, err := url.AbsoluteURL(feed.SiteURL, entry.URL) + if err == nil { + entry.URL = entryURL + } } feed.Entries = append(feed.Entries, entry) |