Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gorilla/feeds

Package gorilla/feeds is a golang rss/atom generator library
https://github.com/gorilla/feeds

atom feeds go golang gorilla gorilla-web-toolkit rss

Last synced: 4 days ago
JSON representation

Package gorilla/feeds is a golang rss/atom generator library

Awesome Lists containing this project

README

        

## gorilla/feeds
![testing](https://github.com/gorilla/feeds/actions/workflows/test.yml/badge.svg)
[![codecov](https://codecov.io/github/gorilla/feeds/branch/main/graph/badge.svg)](https://codecov.io/github/gorilla/feeds)
[![godoc](https://godoc.org/github.com/gorilla/feeds?status.svg)](https://godoc.org/github.com/gorilla/feeds)
[![sourcegraph](https://sourcegraph.com/github.com/gorilla/feeds/-/badge.svg)](https://sourcegraph.com/github.com/gorilla/feeds?badge)

![Gorilla Logo](https://github.com/gorilla/.github/assets/53367916/d92caabf-98e0-473e-bfbf-ab554ba435e5)

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.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: "[email protected]"},
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: "[email protected]"},
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 effectively",
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

jmoiron.net blog

http://jmoiron.net/blog
2013-01-16T03:26:01-05:00
discussion about tech, footie, photos

Limiting Concurrency in Go

2013-01-16T03:26:01-05:00
tag:jmoiron.net,2013-01-16:/blog/limiting-concurrency-in-go/
A discussion on controlled parallelism in golang

Jason Moiron
[email protected]



Logic-less Template Redux

2013-01-16T03:26:01-05:00
tag:jmoiron.net,2013-01-16:/blog/logicless-template-redux/
More thoughts on logicless templates



Idiomatic Code Reuse in Go

2013-01-16T03:26:01-05:00
tag:jmoiron.net,2013-01-16:/blog/idiomatic-code-reuse-in-go/
How to use interfaces <em>effectively</em>


jmoiron.net blog
http://jmoiron.net/blog
discussion about tech, footie, photos
[email protected] (Jason Moiron)
2013-01-16T03:22:24-05:00

Limiting Concurrency in Go
http://jmoiron.net/blog/limiting-concurrency-in-go/
A discussion on controlled parallelism in golang
2013-01-16T03:22:24-05:00


Logic-less Template Redux
http://jmoiron.net/blog/logicless-template-redux/
More thoughts on logicless templates
2013-01-16T03:22:24-05:00


Idiomatic Code Reuse in Go
http://jmoiron.net/blog/idiomatic-code-reuse-in-go/
How to use interfaces <em>effectively</em>
2013-01-16T03:22:24-05:00

{
"version": "https://jsonfeed.org/version/1.1",
"title": "jmoiron.net blog",
"home_page_url": "http://jmoiron.net/blog",
"description": "discussion about tech, footie, photos",
"author": {
"name": "Jason Moiron"
},
"authors": [
{
"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"
},
"authors": [
{
"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"
}
]
}
```