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/json | |
parent | 84d912c9794eaaef0f06638d9d23716f4e02b42f (diff) |
Make sure that item URL are absolute
Diffstat (limited to 'reader/json')
-rw-r--r-- | reader/json/json.go | 6 | ||||
-rw-r--r-- | reader/json/parser_test.go | 25 |
2 files changed, 31 insertions, 0 deletions
diff --git a/reader/json/json.go b/reader/json/json.go index 5924916..ad92068 100644 --- a/reader/json/json.go +++ b/reader/json/json.go @@ -13,6 +13,7 @@ import ( "github.com/miniflux/miniflux/model" "github.com/miniflux/miniflux/reader/date" "github.com/miniflux/miniflux/reader/sanitizer" + "github.com/miniflux/miniflux/url" ) type jsonFeed struct { @@ -66,6 +67,11 @@ func (j *jsonFeed) Transform() *model.Feed { for _, item := range j.Items { entry := item.Transform() + entryURL, err := url.AbsoluteURL(feed.SiteURL, entry.URL) + if err == nil { + entry.URL = entryURL + } + if entry.Author == "" { entry.Author = j.GetAuthor() } diff --git a/reader/json/parser_test.go b/reader/json/parser_test.go index e6fa9ed..a3d5b5b 100644 --- a/reader/json/parser_test.go +++ b/reader/json/parser_test.go @@ -174,6 +174,31 @@ func TestParsePodcast(t *testing.T) { } } +func TestParseFeedWithRelativeURL(t *testing.T) { + data := `{ + "version": "https://jsonfeed.org/version/1", + "title": "Example", + "home_page_url": "https://example.org/", + "feed_url": "https://example.org/feed.json", + "items": [ + { + "id": "2347259", + "url": "something.html", + "date_published": "2016-02-09T14:22:00-07:00" + } + ] + }` + + feed, err := Parse(bytes.NewBufferString(data)) + if err != nil { + t.Error(err) + } + + if feed.Entries[0].URL != "https://example.org/something.html" { + t.Errorf("Incorrect entry URL, got: %s", feed.Entries[0].URL) + } +} + func TestParseAuthor(t *testing.T) { data := `{ "version": "https://jsonfeed.org/version/1", |