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