fixed links when rss has atom:link e link tag [#21]
This commit is contained in:
parent
a3882284e0
commit
6f578a1273
|
@ -89,15 +89,15 @@ func Test_CData(t *testing.T) {
|
|||
}
|
||||
|
||||
func Test_Link(t *testing.T) {
|
||||
content, _ := ioutil.ReadFile("testdata/ignoredLink.rss")
|
||||
content, _ := ioutil.ReadFile("testdata/nytimes.rss")
|
||||
feed := New(1, true, chanHandler, itemHandler)
|
||||
feed.FetchBytes("http://example.com", content, nil)
|
||||
|
||||
channel := feed.Channels[0]
|
||||
item := channel.Items[0]
|
||||
|
||||
channelLinkExpected := "http://www.conservatives.com/XMLGateway/RSS/News.xml"
|
||||
itemLinkExpected := "http://www.conservatives.com/News/News_stories/2013/09/Dr_Tania_Mathias_chosen_to_stand_up_for_local_people_in_Twickenham.aspx"
|
||||
channelLinkExpected := "http://www.nytimes.com/services/xml/rss/nyt/US.xml"
|
||||
itemLinkExpected := "http://www.nytimes.com/2014/01/18/technology/in-keeping-grip-on-data-pipeline-obama-does-little-to-reassure-industry.html?partner=rss&emc=rss"
|
||||
|
||||
if channel.Links[0].Href != channelLinkExpected {
|
||||
t.Errorf("Expected author to be %s but found %s", channelLinkExpected, channel.Links[0].Href)
|
||||
|
|
19
rss.go
19
rss.go
|
@ -43,7 +43,14 @@ func (this *Feed) readRss2(doc *xmlx.Document) (err error) {
|
|||
ch.Links = make([]Link, len(list))
|
||||
|
||||
for i, v := range list {
|
||||
ch.Links[i].Href = v.GetValue()
|
||||
if v.Name.Space == "http://www.w3.org/2005/Atom" && v.Name.Local == "link" {
|
||||
ch.Links[i].Href = v.As("", "href")
|
||||
ch.Links[i].Rel = v.As("", "rel")
|
||||
ch.Links[i].Type = v.As("", "type")
|
||||
ch.Links[i].HrefLang = v.As("", "hreflang")
|
||||
} else {
|
||||
ch.Links[i].Href = v.GetValue()
|
||||
}
|
||||
}
|
||||
|
||||
ch.Description = node.S(ns, "description")
|
||||
|
@ -122,7 +129,15 @@ func (this *Feed) readRss2(doc *xmlx.Document) (err error) {
|
|||
tl = item.SelectNodes(ns, "link")
|
||||
for _, v := range tl {
|
||||
lnk := new(Link)
|
||||
lnk.Href = v.GetValue()
|
||||
if v.Name.Space == "http://www.w3.org/2005/Atom" && v.Name.Local == "link" {
|
||||
lnk.Href = v.As("", "href")
|
||||
lnk.Rel = v.As("", "rel")
|
||||
lnk.Type = v.As("", "type")
|
||||
lnk.HrefLang = v.As("", "hreflang")
|
||||
} else {
|
||||
lnk.Href = v.GetValue()
|
||||
}
|
||||
|
||||
i.Links = append(i.Links, lnk)
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue