1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-08-11 17:51:01 +00:00

Make sure that item URL are absolute

This commit is contained in:
Frédéric Guillot 2017-12-13 20:16:15 -08:00
parent 84d912c979
commit 827683ab59
8 changed files with 129 additions and 11 deletions

View file

@ -537,6 +537,27 @@ func TestParseEntryWithFeedBurnerEnclosures(t *testing.T) {
}
}
func TestParseEntryWithRelativeURL(t *testing.T) {
data := `<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<link>https://example.org/</link>
<item>
<link>item.html</link>
</item>
</channel>
</rss>`
feed, err := Parse(bytes.NewBufferString(data))
if err != nil {
t.Error(err)
}
if feed.Entries[0].Title != "https://example.org/item.html" {
t.Errorf("Incorrect entry title, got: %s", feed.Entries[0].Title)
}
}
func TestParseInvalidXml(t *testing.T) {
data := `garbage`
_, err := Parse(bytes.NewBufferString(data))

View file

@ -15,6 +15,7 @@ import (
"github.com/miniflux/miniflux/helper"
"github.com/miniflux/miniflux/model"
"github.com/miniflux/miniflux/reader/date"
"github.com/miniflux/miniflux/url"
)
type rssFeed struct {
@ -103,6 +104,15 @@ func (r *rssFeed) Transform() *model.Feed {
if entry.URL == "" {
entry.URL = feed.SiteURL
} else {
entryURL, err := url.AbsoluteURL(feed.SiteURL, entry.URL)
if err == nil {
entry.URL = entryURL
}
}
if entry.Title == "" {
entry.Title = entry.URL
}
feed.Entries = append(feed.Entries, entry)
@ -213,11 +223,6 @@ func (r *rssItem) Transform() *model.Entry {
entry.Content = r.GetContent()
entry.Title = strings.TrimSpace(r.Title)
entry.Enclosures = r.GetEnclosures()
if entry.Title == "" {
entry.Title = entry.URL
}
return entry
}