aboutsummaryrefslogtreecommitdiffhomepage
path: root/reader/rdf
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2017-12-13 20:16:15 -0800
committerGravatar Frédéric Guillot <fred@miniflux.net>2017-12-13 20:16:15 -0800
commit827683ab59131ec38ed7cfa268bcaa6dc77d1412 (patch)
tree8461fa67142378b050fde4ee39d393e18ab71aaf /reader/rdf
parent84d912c9794eaaef0f06638d9d23716f4e02b42f (diff)
Make sure that item URL are absolute
Diffstat (limited to 'reader/rdf')
-rw-r--r--reader/rdf/parser_test.go25
-rw-r--r--reader/rdf/rdf.go7
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)