186 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
		
			Vendored
		
	
	
	
| ## gorilla/feeds
 | |
| [](https://godoc.org/github.com/gorilla/feeds)
 | |
| [](https://travis-ci.org/gorilla/feeds)
 | |
| 
 | |
| feeds is a web feed generator library for generating RSS, Atom and JSON feeds from Go
 | |
| applications.
 | |
| 
 | |
| ### Goals
 | |
| 
 | |
|  * Provide a simple interface to create both Atom & RSS 2.0 feeds
 | |
|  * Full support for [Atom][atom], [RSS 2.0][rss], and [JSON Feed Version 1][jsonfeed] spec elements
 | |
|  * Ability to modify particulars for each spec
 | |
| 
 | |
| [atom]: https://tools.ietf.org/html/rfc4287
 | |
| [rss]: http://www.rssboard.org/rss-specification
 | |
| [jsonfeed]: https://jsonfeed.org/version/1
 | |
| 
 | |
| ### Usage
 | |
| 
 | |
| ```go
 | |
| package main
 | |
| 
 | |
| import (
 | |
|     "fmt"
 | |
|     "log"
 | |
|     "time"
 | |
|     "github.com/gorilla/feeds"
 | |
| )
 | |
| 
 | |
| func main() {
 | |
|     now := time.Now()
 | |
|     feed := &feeds.Feed{
 | |
|         Title:       "jmoiron.net blog",
 | |
|         Link:        &feeds.Link{Href: "http://jmoiron.net/blog"},
 | |
|         Description: "discussion about tech, footie, photos",
 | |
|         Author:      &feeds.Author{Name: "Jason Moiron", Email: "jmoiron@jmoiron.net"},
 | |
|         Created:     now,
 | |
|     }
 | |
| 
 | |
|     feed.Items = []*feeds.Item{
 | |
|         &feeds.Item{
 | |
|             Title:       "Limiting Concurrency in Go",
 | |
|             Link:        &feeds.Link{Href: "http://jmoiron.net/blog/limiting-concurrency-in-go/"},
 | |
|             Description: "A discussion on controlled parallelism in golang",
 | |
|             Author:      &feeds.Author{Name: "Jason Moiron", Email: "jmoiron@jmoiron.net"},
 | |
|             Created:     now,
 | |
|         },
 | |
|         &feeds.Item{
 | |
|             Title:       "Logic-less Template Redux",
 | |
|             Link:        &feeds.Link{Href: "http://jmoiron.net/blog/logicless-template-redux/"},
 | |
|             Description: "More thoughts on logicless templates",
 | |
|             Created:     now,
 | |
|         },
 | |
|         &feeds.Item{
 | |
|             Title:       "Idiomatic Code Reuse in Go",
 | |
|             Link:        &feeds.Link{Href: "http://jmoiron.net/blog/idiomatic-code-reuse-in-go/"},
 | |
|             Description: "How to use interfaces <em>effectively</em>",
 | |
|             Created:     now,
 | |
|         },
 | |
|     }
 | |
| 
 | |
|     atom, err := feed.ToAtom()
 | |
|     if err != nil {
 | |
|         log.Fatal(err)
 | |
|     }
 | |
| 
 | |
|     rss, err := feed.ToRss()
 | |
|     if err != nil {
 | |
|         log.Fatal(err)
 | |
|     }
 | |
| 
 | |
|     json, err := feed.ToJSON()
 | |
|     if err != nil {
 | |
|         log.Fatal(err)
 | |
|     }
 | |
| 
 | |
|     fmt.Println(atom, "\n", rss, "\n", json)
 | |
| }
 | |
| ```
 | |
| 
 | |
| Outputs:
 | |
| 
 | |
| ```xml
 | |
| <?xml version="1.0" encoding="UTF-8"?>
 | |
| <feed xmlns="http://www.w3.org/2005/Atom">
 | |
|   <title>jmoiron.net blog</title>
 | |
|   <link href="http://jmoiron.net/blog"></link>
 | |
|   <id>http://jmoiron.net/blog</id>
 | |
|   <updated>2013-01-16T03:26:01-05:00</updated>
 | |
|   <summary>discussion about tech, footie, photos</summary>
 | |
|   <entry>
 | |
|     <title>Limiting Concurrency in Go</title>
 | |
|     <link href="http://jmoiron.net/blog/limiting-concurrency-in-go/"></link>
 | |
|     <updated>2013-01-16T03:26:01-05:00</updated>
 | |
|     <id>tag:jmoiron.net,2013-01-16:/blog/limiting-concurrency-in-go/</id>
 | |
|     <summary type="html">A discussion on controlled parallelism in golang</summary>
 | |
|     <author>
 | |
|       <name>Jason Moiron</name>
 | |
|       <email>jmoiron@jmoiron.net</email>
 | |
|     </author>
 | |
|   </entry>
 | |
|   <entry>
 | |
|     <title>Logic-less Template Redux</title>
 | |
|     <link href="http://jmoiron.net/blog/logicless-template-redux/"></link>
 | |
|     <updated>2013-01-16T03:26:01-05:00</updated>
 | |
|     <id>tag:jmoiron.net,2013-01-16:/blog/logicless-template-redux/</id>
 | |
|     <summary type="html">More thoughts on logicless templates</summary>
 | |
|     <author></author>
 | |
|   </entry>
 | |
|   <entry>
 | |
|     <title>Idiomatic Code Reuse in Go</title>
 | |
|     <link href="http://jmoiron.net/blog/idiomatic-code-reuse-in-go/"></link>
 | |
|     <updated>2013-01-16T03:26:01-05:00</updated>
 | |
|     <id>tag:jmoiron.net,2013-01-16:/blog/idiomatic-code-reuse-in-go/</id>
 | |
|     <summary type="html">How to use interfaces <em>effectively</em></summary>
 | |
|     <author></author>
 | |
|   </entry>
 | |
| </feed>
 | |
| 
 | |
| <?xml version="1.0" encoding="UTF-8"?>
 | |
| <rss version="2.0">
 | |
|   <channel>
 | |
|     <title>jmoiron.net blog</title>
 | |
|     <link>http://jmoiron.net/blog</link>
 | |
|     <description>discussion about tech, footie, photos</description>
 | |
|     <managingEditor>jmoiron@jmoiron.net (Jason Moiron)</managingEditor>
 | |
|     <pubDate>2013-01-16T03:22:24-05:00</pubDate>
 | |
|     <item>
 | |
|       <title>Limiting Concurrency in Go</title>
 | |
|       <link>http://jmoiron.net/blog/limiting-concurrency-in-go/</link>
 | |
|       <description>A discussion on controlled parallelism in golang</description>
 | |
|       <pubDate>2013-01-16T03:22:24-05:00</pubDate>
 | |
|     </item>
 | |
|     <item>
 | |
|       <title>Logic-less Template Redux</title>
 | |
|       <link>http://jmoiron.net/blog/logicless-template-redux/</link>
 | |
|       <description>More thoughts on logicless templates</description>
 | |
|       <pubDate>2013-01-16T03:22:24-05:00</pubDate>
 | |
|     </item>
 | |
|     <item>
 | |
|       <title>Idiomatic Code Reuse in Go</title>
 | |
|       <link>http://jmoiron.net/blog/idiomatic-code-reuse-in-go/</link>
 | |
|       <description>How to use interfaces <em>effectively</em></description>
 | |
|       <pubDate>2013-01-16T03:22:24-05:00</pubDate>
 | |
|     </item>
 | |
|   </channel>
 | |
| </rss>
 | |
| 
 | |
| {
 | |
|   "version": "https://jsonfeed.org/version/1",
 | |
|   "title": "jmoiron.net blog",
 | |
|   "home_page_url": "http://jmoiron.net/blog",
 | |
|   "description": "discussion about tech, footie, photos",
 | |
|   "author": {
 | |
|     "name": "Jason Moiron"
 | |
|   },
 | |
|   "items": [
 | |
|     {
 | |
|       "id": "",
 | |
|       "url": "http://jmoiron.net/blog/limiting-concurrency-in-go/",
 | |
|       "title": "Limiting Concurrency in Go",
 | |
|       "summary": "A discussion on controlled parallelism in golang",
 | |
|       "date_published": "2013-01-16T03:22:24.530817846-05:00",
 | |
|       "author": {
 | |
|         "name": "Jason Moiron"
 | |
|       }
 | |
|     },
 | |
|     {
 | |
|       "id": "",
 | |
|       "url": "http://jmoiron.net/blog/logicless-template-redux/",
 | |
|       "title": "Logic-less Template Redux",
 | |
|       "summary": "More thoughts on logicless templates",
 | |
|       "date_published": "2013-01-16T03:22:24.530817846-05:00"
 | |
|     },
 | |
|     {
 | |
|       "id": "",
 | |
|       "url": "http://jmoiron.net/blog/idiomatic-code-reuse-in-go/",
 | |
|       "title": "Idiomatic Code Reuse in Go",
 | |
|       "summary": "How to use interfaces \u003cem\u003eeffectively\u003c/em\u003e",
 | |
|       "date_published": "2013-01-16T03:22:24.530817846-05:00"
 | |
|     }
 | |
|   ]
 | |
| }
 | |
| ```
 | |
| 
 |