Added specific error types rather than generic error types
This commit is contained in:
parent
326d76d501
commit
d4964c8450
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…
Reference in New Issue