fixed links when rss has atom:link e link tag [#21]
This commit is contained in:
		
							parent
							
								
									a3882284e0
								
							
						
					
					
						commit
						6f578a1273
					
				
					 3 changed files with 22 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -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)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								testdata/nytimes.rss
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								testdata/nytimes.rss
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue