Documentation ¶
Overview ¶
Syndication (feed) generator library for golang.
Installing
go get github.com/gorilla/feeds
Syndicate provides a simple, generic Feed interface with a generic Item object as well as RSS and Atom specific RssFeed and AtomFeed objects which allow access to all of each spec's defined elements.
Examples ¶
Create a Feed and some Items in that feed using the generic interfaces:
import ( "time" . "github.com/gorilla/feeds ) now = time.Now() feed := &Feed{ Title: "jmoiron.net blog", Link: &Link{Href: "http://jmoiron.net/blog"}, Description: "discussion about tech, footie, photos", Author: &Author{"Jason Moiron", "jmoiron@jmoiron.net"}, Created: now, Copyright: "This work is copyright © Benjamin Button", } feed.Items = []*Item{ &Item{ Title: "Limiting Concurrency in Go", Link: &Link{Href: "http://jmoiron.net/blog/limiting-concurrency-in-go/"}, Description: "A discussion on controlled parallelism in golang", Author: &Author{"Jason Moiron", "jmoiron@jmoiron.net"}, Created: now, }, &Item{ Title: "Logic-less Template Redux", Link: &Link{Href: "http://jmoiron.net/blog/logicless-template-redux/"}, Description: "More thoughts on logicless templates", Created: now, }, &Item{ Title: "Idiomatic Code Reuse in Go", Link: &Link{Href: "http://jmoiron.net/blog/idiomatic-code-reuse-in-go/"}, Description: "How to use interfaces <em>effectively</em>", Created: now, }, }
From here, you can output Atom or RSS versions of this feed easily
atom, err := feed.ToAtom() rss, err := feed.ToRss()
You can also get access to the underlying objects that feeds uses to export its XML
atomFeed := &Atom{feed}.AtomFeed() rssFeed := &Rss{feed}.RssFeed()
From here, you can modify or add each syndication's specific fields before outputting
atomFeed.Subtitle = "plays the blues" atom, err := ToXML(atomFeed) rssFeed.Generator = "gorilla/feeds v1.0 (github.com/gorilla/feeds)" rss, err := ToXML(rssFeed)
Index ¶
- func ToXML(feed XmlFeed) (string, error)
- func WriteXML(feed XmlFeed, w io.Writer) error
- type Atom
- type AtomAuthor
- type AtomContent
- type AtomContributor
- type AtomEntry
- type AtomFeed
- type AtomLink
- type AtomPerson
- type AtomSummary
- type Author
- type Feed
- type Image
- type Item
- type Link
- type Rss
- type RssAtomLink
- type RssEnclosure
- type RssFeed
- type RssGuid
- type RssImage
- type RssItem
- type RssMedia
- type RssTextInput
- type UUID
- type XmlFeed
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Atom ¶
type Atom struct {
*Feed
}
type AtomAuthor ¶
type AtomAuthor struct { XMLName xml.Name `xml:"author"` AtomPerson }
type AtomContent ¶
type AtomContributor ¶
type AtomContributor struct { XMLName xml.Name `xml:"contributor"` AtomPerson }
type AtomEntry ¶
type AtomEntry struct { XMLName xml.Name `xml:"entry"` Xmlns string `xml:"xmlns,attr,omitempty"` Title string `xml:"title"` // required Updated string `xml:"updated"` // required Id string `xml:"id"` // required Category string `xml:"category,omitempty"` Content *AtomContent Rights string `xml:"rights,omitempty"` Source string `xml:"source,omitempty"` Published string `xml:"published,omitempty"` Contributor *AtomContributor Link *AtomLink // required if no child 'content' elements Summary *AtomSummary // required if content has src or content is base64 Author *AtomAuthor // required if feed lacks an author }
type AtomFeed ¶
type AtomFeed struct { XMLName xml.Name `xml:"feed"` Xmlns string `xml:"xmlns,attr"` Title string `xml:"title"` // required Id string `xml:"id"` // required Updated string `xml:"updated"` // required Category string `xml:"category,omitempty"` Icon string `xml:"icon,omitempty"` Logo string `xml:"logo,omitempty"` Rights string `xml:"rights,omitempty"` // copyright used Subtitle string `xml:"subtitle,omitempty"` Link *AtomLink Author *AtomAuthor // required Contributor *AtomContributor Entries []*AtomEntry }
type AtomPerson ¶
type AtomSummary ¶
type Feed ¶
type Feed struct { Title string Link *Link Description string Author *Author Updated time.Time Created time.Time Id string Subtitle string Items []*Item Copyright string Image *Image Url string }
type Rss ¶
type Rss struct {
*Feed
}
type RssAtomLink ¶
type RssEnclosure ¶
type RssFeed ¶
type RssFeed struct { XMLName xml.Name `xml:"channel"` AtomLink *RssAtomLink Title string `xml:"title"` // required Link string `xml:"link"` // required Description string `xml:"description"` // required Language string `xml:"language,omitempty"` Copyright string `xml:"copyright,omitempty"` ManagingEditor string `xml:"managingEditor,omitempty"` // Author used WebMaster string `xml:"webMaster,omitempty"` PubDate string `xml:"pubDate,omitempty"` // created or updated LastBuildDate string `xml:"lastBuildDate,omitempty"` // updated used Category string `xml:"category,omitempty"` Generator string `xml:"generator,omitempty"` Docs string `xml:"docs,omitempty"` Cloud string `xml:"cloud,omitempty"` Ttl int `xml:"ttl,omitempty"` Rating string `xml:"rating,omitempty"` SkipHours string `xml:"skipHours,omitempty"` SkipDays string `xml:"skipDays,omitempty"` Image *RssImage TextInput *RssTextInput Items []*RssItem }
type RssItem ¶
type RssItem struct { XMLName xml.Name `xml:"item"` Title string `xml:"title"` // required Link string `xml:"link"` // required Description string `xml:"description"` // required Author string `xml:"dc:creator,omitempty"` Category string `xml:"category,omitempty"` Comments string `xml:"comments,omitempty"` Enclosure *RssEnclosure Guid *RssGuid // Id used PubDate string `xml:"pubDate,omitempty"` // created or updated Source string `xml:"source,omitempty"` Image *RssMedia }
type RssTextInput ¶
Click to show internal directories.
Click to hide internal directories.