1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-09-15 18:57:04 +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

@ -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
}

View file

@ -152,6 +152,32 @@ func TestParseFeedURL(t *testing.T) {
}
}
func TestParseEntryWithRelativeURL(t *testing.T) {
data := `<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Example Feed</title>
<link href="http://example.org/"/>
<entry>
<title>Test</title>
<link href="something.html"/>
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
<updated>2003-12-13T18:30:02Z</updated>
<summary>Some text.</summary>
</entry>
</feed>`
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 := `<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">