Added specific error types rather than generic error types
This commit is contained in:
		
							parent
							
								
									326d76d501
								
							
						
					
					
						commit
						d4964c8450
					
				
					 2 changed files with 15 additions and 6 deletions
				
			
		
							
								
								
									
										13
									
								
								feed.go
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								feed.go
									
										
									
									
									
								
							|  | @ -26,7 +26,6 @@ | |||
| package feeder | ||||
| 
 | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	xmlx "github.com/jteeuwen/go-pkg-xmlx" | ||||
| 	"net/http" | ||||
|  | @ -35,6 +34,15 @@ import ( | |||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| type UnsupportedFeedError struct { | ||||
| 	Type    string | ||||
| 	Version [2]int | ||||
| } | ||||
| 
 | ||||
| func (err *UnsupportedFeedError) Error() string { | ||||
| 	return fmt.Sprintf("Unsupported feed: %s, version: %+v", err.Type, err.Version) | ||||
| } | ||||
| 
 | ||||
| type ChannelHandler func(f *Feed, newchannels []*Channel) | ||||
| type ItemHandler func(f *Feed, ch *Channel, newitems []*Item) | ||||
| 
 | ||||
|  | @ -150,8 +158,7 @@ func (this *Feed) makeFeed(doc *xmlx.Document) (err error) { | |||
| 	this.Type, this.Version = this.GetVersionInfo(doc) | ||||
| 
 | ||||
| 	if ok := this.testVersions(); !ok { | ||||
| 		err = errors.New(fmt.Sprintf("Unsupported feed: %s, version: %+v", this.Type, this.Version)) | ||||
| 		return | ||||
| 		return &UnsupportedFeedError{Type: this.Type, Version: this.Version} | ||||
| 	} | ||||
| 
 | ||||
| 	if err = this.buildFeed(doc); err != nil || len(this.Channels) == 0 { | ||||
|  |  | |||
							
								
								
									
										8
									
								
								rss.go
									
										
									
									
									
								
							
							
						
						
									
										8
									
								
								rss.go
									
										
									
									
									
								
							|  | @ -1,11 +1,13 @@ | |||
| package feeder | ||||
| 
 | ||||
| import ( | ||||
| 	"errors" | ||||
| 
 | ||||
| 	xmlx "github.com/jteeuwen/go-pkg-xmlx" | ||||
| ) | ||||
| 
 | ||||
| type MissingRssNodeError struct{} | ||||
| 
 | ||||
| func (err *MissingRssNodeError) Error() string { return "Failed to find rss/rdf node in XML." } | ||||
| 
 | ||||
| type Extension struct { | ||||
| 	Name      string | ||||
| 	Value     string | ||||
|  | @ -37,7 +39,7 @@ func (this *Feed) readRss2(doc *xmlx.Document) (err error) { | |||
| 	} | ||||
| 
 | ||||
| 	if root == nil { | ||||
| 		return errors.New("Failed to find rss/rdf node in XML.") | ||||
| 		return &MissingRssNodeError{} | ||||
| 	} | ||||
| 
 | ||||
| 	channels := root.SelectNodes(ns, "channel") | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue