git.sr.ht/~pingoo/stdx@v0.0.0-20240218134121-094174641f6e/feeds/doc.go (about)

     1  /*
     2  Syndication (feed) generator library for golang.
     3  
     4  Installing
     5  
     6  	go get github.com/jlelse/feeds
     7  
     8  Feeds provides a simple, generic Feed interface with a generic Item object as well as RSS, Atom and JSON Feed specific RssFeed, AtomFeed and JSONFeed objects which allow access to all of each spec's defined elements.
     9  
    10  # Examples
    11  
    12  Create a Feed and some Items in that feed using the generic interfaces:
    13  
    14  	import (
    15  		"time"
    16  		. "github.com/jlelse/feeds"
    17  	)
    18  
    19  	now = time.Now()
    20  
    21  	feed := &Feed{
    22  		Title:       "jmoiron.net blog",
    23  		Link:        &Link{Href: "http://jmoiron.net/blog"},
    24  		Description: "discussion about tech, footie, photos",
    25  		Author:      &Author{Name: "Jason Moiron", Email: "jmoiron@jmoiron.net"},
    26  		Created:     now,
    27  		Copyright:   "This work is copyright © Benjamin Button",
    28  	}
    29  
    30  	feed.Items = []*Item{
    31  		&Item{
    32  			Title:       "Limiting Concurrency in Go",
    33  			Link:        &Link{Href: "http://jmoiron.net/blog/limiting-concurrency-in-go/"},
    34  			Description: "A discussion on controlled parallelism in golang",
    35  			Author:      &Author{Name: "Jason Moiron", Email: "jmoiron@jmoiron.net"},
    36  			Created:     now,
    37  		},
    38  		&Item{
    39  			Title:       "Logic-less Template Redux",
    40  			Link:        &Link{Href: "http://jmoiron.net/blog/logicless-template-redux/"},
    41  			Description: "More thoughts on logicless templates",
    42  			Created:     now,
    43  		},
    44  		&Item{
    45  			Title:       "Idiomatic Code Reuse in Go",
    46  			Link:        &Link{Href: "http://jmoiron.net/blog/idiomatic-code-reuse-in-go/"},
    47  			Description: "How to use interfaces <em>effectively</em>",
    48  			Created:     now,
    49  		},
    50  	}
    51  
    52  From here, you can output Atom, RSS, or JSON Feed versions of this feed easily
    53  
    54  	atom, err := feed.ToAtom()
    55  	rss, err := feed.ToRss()
    56  	json, err := feed.ToJSON()
    57  
    58  You can also get access to the underlying objects that feeds uses to export its XML
    59  
    60  	atomFeed := (&Atom{Feed: feed}).AtomFeed()
    61  	rssFeed := (&Rss{Feed: feed}).RssFeed()
    62  	jsonFeed := (&JSON{Feed: feed}).JSONFeed()
    63  
    64  From here, you can modify or add each syndication's specific fields before outputting
    65  
    66  	atomFeed.Subtitle = "plays the blues"
    67  	atom, err := ToXML(atomFeed)
    68  	rssFeed.Generator = "gorilla/feeds v1.0 (github.com/jlelse/feeds)"
    69  	rss, err := ToXML(rssFeed)
    70  	jsonFeed.NextUrl = "https://www.example.com/feed.json?page=2"
    71  	json, err := jsonFeed.ToJSON()
    72  */
    73  package feeds