Skip to content

Commit

Permalink
Handle invalid feeds with relative URLs
Browse files Browse the repository at this point in the history
  • Loading branch information
fguillot committed Dec 3, 2020
1 parent 49feb19 commit f722fd1
Show file tree
Hide file tree
Showing 18 changed files with 388 additions and 153 deletions.
20 changes: 16 additions & 4 deletions reader/atom/atom_03.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,24 @@ type atom03Feed struct {
Entries []atom03Entry `xml:"entry"`
}

func (a *atom03Feed) Transform() *model.Feed {
func (a *atom03Feed) Transform(baseURL string) *model.Feed {
var err error

feed := new(model.Feed)
feed.FeedURL = a.Links.firstLinkWithRelation("self")
feed.SiteURL = a.Links.originalLink()
feed.Title = a.Title.String()

feedURL := a.Links.firstLinkWithRelation("self")
feed.FeedURL, err = url.AbsoluteURL(baseURL, feedURL)
if err != nil {
feed.FeedURL = feedURL
}

siteURL := a.Links.originalLink()
feed.SiteURL, err = url.AbsoluteURL(baseURL, siteURL)
if err != nil {
feed.SiteURL = siteURL
}

feed.Title = a.Title.String()
if feed.Title == "" {
feed.Title = feed.SiteURL
}
Expand Down
14 changes: 7 additions & 7 deletions reader/atom/atom_03_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func TestParseAtom03(t *testing.T) {
</entry>
</feed>`

feed, err := Parse(bytes.NewBufferString(data))
feed, err := Parse("http://diveintomark.org/", bytes.NewBufferString(data))
if err != nil {
t.Fatal(err)
}
Expand All @@ -37,7 +37,7 @@ func TestParseAtom03(t *testing.T) {
t.Errorf("Incorrect title, got: %s", feed.Title)
}

if feed.FeedURL != "" {
if feed.FeedURL != "http://diveintomark.org/" {
t.Errorf("Incorrect feed URL, got: %s", feed.FeedURL)
}

Expand Down Expand Up @@ -88,7 +88,7 @@ func TestParseAtom03WithoutFeedTitle(t *testing.T) {
</entry>
</feed>`

feed, err := Parse(bytes.NewBufferString(data))
feed, err := Parse("http://diveintomark.org/", bytes.NewBufferString(data))
if err != nil {
t.Fatal(err)
}
Expand All @@ -111,7 +111,7 @@ func TestParseAtom03WithoutEntryTitle(t *testing.T) {
</entry>
</feed>`

feed, err := Parse(bytes.NewBufferString(data))
feed, err := Parse("http://diveintomark.org/", bytes.NewBufferString(data))
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -142,7 +142,7 @@ func TestParseAtom03WithSummaryOnly(t *testing.T) {
</entry>
</feed>`

feed, err := Parse(bytes.NewBufferString(data))
feed, err := Parse("http://diveintomark.org/", bytes.NewBufferString(data))
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -173,7 +173,7 @@ func TestParseAtom03WithXMLContent(t *testing.T) {
</entry>
</feed>`

feed, err := Parse(bytes.NewBufferString(data))
feed, err := Parse("http://diveintomark.org/", bytes.NewBufferString(data))
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -204,7 +204,7 @@ func TestParseAtom03WithBase64Content(t *testing.T) {
</entry>
</feed>`

feed, err := Parse(bytes.NewBufferString(data))
feed, err := Parse("http://diveintomark.org/", bytes.NewBufferString(data))
if err != nil {
t.Fatal(err)
}
Expand Down
20 changes: 16 additions & 4 deletions reader/atom/atom_10.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,24 @@ type atom10Feed struct {
Entries []atom10Entry `xml:"entry"`
}

func (a *atom10Feed) Transform() *model.Feed {
func (a *atom10Feed) Transform(baseURL string) *model.Feed {
var err error

feed := new(model.Feed)
feed.FeedURL = a.Links.firstLinkWithRelation("self")
feed.SiteURL = a.Links.originalLink()
feed.Title = a.Title.String()

feedURL := a.Links.firstLinkWithRelation("self")
feed.FeedURL, err = url.AbsoluteURL(baseURL, feedURL)
if err != nil {
feed.FeedURL = feedURL
}

siteURL := a.Links.originalLink()
feed.SiteURL, err = url.AbsoluteURL(baseURL, siteURL)
if err != nil {
feed.SiteURL = siteURL
}

feed.Title = a.Title.String()
if feed.Title == "" {
feed.Title = feed.SiteURL
}
Expand Down
Loading

0 comments on commit f722fd1

Please sign in to comment.