First implementation of an atom feed
This commit is contained in:
112
source.go
Normal file
112
source.go
Normal file
@@ -0,0 +1,112 @@
|
||||
package atomfeed
|
||||
|
||||
import "fmt"
|
||||
|
||||
type Source struct {
|
||||
*CommonAttributes
|
||||
Authors []*Person `xml:"author,omitempty"`
|
||||
Categories []*Category `xml:"category,omitempty"`
|
||||
Contributors []*Person `xml:"contributor,omitempty"`
|
||||
Generator *Generator `xml:"generator,omitempty"`
|
||||
Icon *Icon `xml:"icon,omitempty"`
|
||||
ID *ID `xml:"id,omitempty"`
|
||||
Links []*Link `xml:"link,omitempty"`
|
||||
Logo *Logo `xml:"logo,omitempty"`
|
||||
Rights *Text `xml:"rights,omitempty"`
|
||||
Subtitle *Text `xml:"subtitle,omitempty"`
|
||||
Title *Text `xml:"title,omitempty"`
|
||||
Updated *Date `xml:"updated,omitempty"`
|
||||
Extensions []*ExtensionElement `xml:",any"`
|
||||
}
|
||||
|
||||
func (s *Source) Check() error {
|
||||
if s.Authors != nil {
|
||||
for i, a := range s.Authors {
|
||||
if err := a.Check(); err != nil {
|
||||
return fmt.Errorf("author element %v of source: %v", i, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if s.Categories != nil {
|
||||
for i, c := range s.Categories {
|
||||
if err := c.Check(); err != nil {
|
||||
return fmt.Errorf("category element %v of source: %v", i, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if s.Contributors != nil {
|
||||
for i, c := range s.Contributors {
|
||||
if err := c.Check(); err != nil {
|
||||
return fmt.Errorf("contributor element %v of source: %v", i, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if s.Generator != nil {
|
||||
if err := s.Generator.Check(); err != nil {
|
||||
return fmt.Errorf("generator element of source: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
if s.Icon != nil {
|
||||
if err := s.Icon.Check(); err != nil {
|
||||
return fmt.Errorf("icon element of source: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
if s.ID != nil {
|
||||
if err := s.ID.Check(); err != nil {
|
||||
return fmt.Errorf("id element of source: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
if s.Links != nil {
|
||||
for i, l := range s.Links {
|
||||
if err := l.Check(); err != nil {
|
||||
return fmt.Errorf("link element %v of source: %v", i, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if s.Logo != nil {
|
||||
if err := s.Logo.Check(); err != nil {
|
||||
return fmt.Errorf("logo element of source: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
if s.Rights != nil {
|
||||
if err := (*s.Rights).Check(); err != nil {
|
||||
return fmt.Errorf("rights element of source: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
if s.Subtitle != nil {
|
||||
if err := (*s.Subtitle).Check(); err != nil {
|
||||
return fmt.Errorf("subtitle element of source: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
if s.Title != nil {
|
||||
if err := (*s.Title).Check(); err != nil {
|
||||
return fmt.Errorf("title element of source: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
if s.Updated != nil {
|
||||
if err := s.Updated.Check(); err != nil {
|
||||
return fmt.Errorf("updated element of source: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
if s.Extensions != nil {
|
||||
for i, e := range s.Extensions {
|
||||
if err := e.Check(); err != nil {
|
||||
return fmt.Errorf("extension element %v of source: %v", i, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user