diff options
Diffstat (limited to 'vendor/github.com/gorilla/feeds')
-rw-r--r-- | vendor/github.com/gorilla/feeds/.editorconfig | 20 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/.gitignore | 1 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/LICENSE | 28 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/Makefile | 34 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/README.md | 198 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/atom.go | 178 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/doc.go | 73 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/feed.go | 146 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/json.go | 190 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/rss.go | 183 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/test.atom | 92 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/test.rss | 96 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/to-implement.md | 20 | ||||
-rw-r--r-- | vendor/github.com/gorilla/feeds/uuid.go | 27 |
14 files changed, 0 insertions, 1286 deletions
diff --git a/vendor/github.com/gorilla/feeds/.editorconfig b/vendor/github.com/gorilla/feeds/.editorconfig deleted file mode 100644 index 2940ec92a..000000000 --- a/vendor/github.com/gorilla/feeds/.editorconfig +++ /dev/null @@ -1,20 +0,0 @@ -; https://editorconfig.org/ - -root = true - -[*] -insert_final_newline = true -charset = utf-8 -trim_trailing_whitespace = true -indent_style = space -indent_size = 2 - -[{Makefile,go.mod,go.sum,*.go,.gitmodules}] -indent_style = tab -indent_size = 4 - -[*.md] -indent_size = 4 -trim_trailing_whitespace = false - -eclint_indent_style = unset diff --git a/vendor/github.com/gorilla/feeds/.gitignore b/vendor/github.com/gorilla/feeds/.gitignore deleted file mode 100644 index 84039fec6..000000000 --- a/vendor/github.com/gorilla/feeds/.gitignore +++ /dev/null @@ -1 +0,0 @@ -coverage.coverprofile diff --git a/vendor/github.com/gorilla/feeds/LICENSE b/vendor/github.com/gorilla/feeds/LICENSE deleted file mode 100644 index ee0d53cef..000000000 --- a/vendor/github.com/gorilla/feeds/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2023 The Gorilla Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/gorilla/feeds/Makefile b/vendor/github.com/gorilla/feeds/Makefile deleted file mode 100644 index ac37ffd32..000000000 --- a/vendor/github.com/gorilla/feeds/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -GO_LINT=$(shell which golangci-lint 2> /dev/null || echo '') -GO_LINT_URI=github.com/golangci/golangci-lint/cmd/golangci-lint@latest - -GO_SEC=$(shell which gosec 2> /dev/null || echo '') -GO_SEC_URI=github.com/securego/gosec/v2/cmd/gosec@latest - -GO_VULNCHECK=$(shell which govulncheck 2> /dev/null || echo '') -GO_VULNCHECK_URI=golang.org/x/vuln/cmd/govulncheck@latest - -.PHONY: golangci-lint -golangci-lint: - $(if $(GO_LINT), ,go install $(GO_LINT_URI)) - @echo "##### Running golangci-lint" - golangci-lint run -v - -.PHONY: gosec -gosec: - $(if $(GO_SEC), ,go install $(GO_SEC_URI)) - @echo "##### Running gosec" - gosec ./... - -.PHONY: govulncheck -govulncheck: - $(if $(GO_VULNCHECK), ,go install $(GO_VULNCHECK_URI)) - @echo "##### Running govulncheck" - govulncheck ./... - -.PHONY: verify -verify: golangci-lint gosec govulncheck - -.PHONY: test -test: - @echo "##### Running tests" - go test -race -cover -coverprofile=coverage.coverprofile -covermode=atomic -v ./... diff --git a/vendor/github.com/gorilla/feeds/README.md b/vendor/github.com/gorilla/feeds/README.md deleted file mode 100644 index 7d7137b46..000000000 --- a/vendor/github.com/gorilla/feeds/README.md +++ /dev/null @@ -1,198 +0,0 @@ -## gorilla/feeds - -[](https://codecov.io/github/gorilla/feeds) -[](https://godoc.org/github.com/gorilla/feeds) -[](https://sourcegraph.com/github.com/gorilla/feeds?badge) - - - -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: "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.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" - } - ] -} -``` diff --git a/vendor/github.com/gorilla/feeds/atom.go b/vendor/github.com/gorilla/feeds/atom.go deleted file mode 100644 index 73de995c1..000000000 --- a/vendor/github.com/gorilla/feeds/atom.go +++ /dev/null @@ -1,178 +0,0 @@ -package feeds - -import ( - "encoding/xml" - "fmt" - "net/url" - "time" -) - -// Generates Atom feed as XML - -const ns = "http://www.w3.org/2005/Atom" - -type AtomPerson struct { - Name string `xml:"name,omitempty"` - Uri string `xml:"uri,omitempty"` - Email string `xml:"email,omitempty"` -} - -type AtomSummary struct { - XMLName xml.Name `xml:"summary"` - Content string `xml:",chardata"` - Type string `xml:"type,attr"` -} - -type AtomContent struct { - XMLName xml.Name `xml:"content"` - Content string `xml:",chardata"` - Type string `xml:"type,attr"` -} - -type AtomAuthor struct { - XMLName xml.Name `xml:"author"` - AtomPerson -} - -type AtomContributor struct { - XMLName xml.Name `xml:"contributor"` - AtomPerson -} - -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 - Links []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 -} - -// Multiple links with different rel can coexist -type AtomLink struct { - //Atom 1.0 <link rel="enclosure" type="audio/mpeg" title="MP3" href="http://www.example.org/myaudiofile.mp3" length="1234" /> - XMLName xml.Name `xml:"link"` - Href string `xml:"href,attr"` - Rel string `xml:"rel,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - Length string `xml:"length,attr,omitempty"` -} - -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 `xml:"author,omitempty"` - Contributor *AtomContributor - Entries []*AtomEntry `xml:"entry"` -} - -type Atom struct { - *Feed -} - -func newAtomEntry(i *Item) *AtomEntry { - id := i.Id - link := i.Link - if link == nil { - link = &Link{} - } - if len(id) == 0 { - // if there's no id set, try to create one, either from data or just a uuid - if len(link.Href) > 0 && (!i.Created.IsZero() || !i.Updated.IsZero()) { - dateStr := anyTimeFormat("2006-01-02", i.Updated, i.Created) - host, path := link.Href, "/invalid.html" - if url, err := url.Parse(link.Href); err == nil { - host, path = url.Host, url.Path - } - id = fmt.Sprintf("tag:%s,%s:%s", host, dateStr, path) - } else { - id = "urn:uuid:" + NewUUID().String() - } - } - var name, email string - if i.Author != nil { - name, email = i.Author.Name, i.Author.Email - } - - link_rel := link.Rel - if link_rel == "" { - link_rel = "alternate" - } - x := &AtomEntry{ - Title: i.Title, - Links: []AtomLink{{Href: link.Href, Rel: link_rel, Type: link.Type}}, - Id: id, - Updated: anyTimeFormat(time.RFC3339, i.Updated, i.Created), - } - - // if there's a description, assume it's html - if len(i.Description) > 0 { - x.Summary = &AtomSummary{Content: i.Description, Type: "html"} - } - - // if there's a content, assume it's html - if len(i.Content) > 0 { - x.Content = &AtomContent{Content: i.Content, Type: "html"} - } - - if i.Enclosure != nil && link_rel != "enclosure" { - x.Links = append(x.Links, AtomLink{Href: i.Enclosure.Url, Rel: "enclosure", Type: i.Enclosure.Type, Length: i.Enclosure.Length}) - } - - if len(name) > 0 || len(email) > 0 { - x.Author = &AtomAuthor{AtomPerson: AtomPerson{Name: name, Email: email}} - } - return x -} - -// create a new AtomFeed with a generic Feed struct's data -func (a *Atom) AtomFeed() *AtomFeed { - updated := anyTimeFormat(time.RFC3339, a.Updated, a.Created) - link := a.Link - if link == nil { - link = &Link{} - } - feed := &AtomFeed{ - Xmlns: ns, - Title: a.Title, - Link: &AtomLink{Href: link.Href, Rel: link.Rel}, - Subtitle: a.Description, - Id: link.Href, - Updated: updated, - Rights: a.Copyright, - } - if a.Author != nil { - feed.Author = &AtomAuthor{AtomPerson: AtomPerson{Name: a.Author.Name, Email: a.Author.Email}} - } - for _, e := range a.Items { - feed.Entries = append(feed.Entries, newAtomEntry(e)) - } - return feed -} - -// FeedXml returns an XML-Ready object for an Atom object -func (a *Atom) FeedXml() interface{} { - return a.AtomFeed() -} - -// FeedXml returns an XML-ready object for an AtomFeed object -func (a *AtomFeed) FeedXml() interface{} { - return a -} diff --git a/vendor/github.com/gorilla/feeds/doc.go b/vendor/github.com/gorilla/feeds/doc.go deleted file mode 100644 index 4e0759ccc..000000000 --- a/vendor/github.com/gorilla/feeds/doc.go +++ /dev/null @@ -1,73 +0,0 @@ -/* -Syndication (feed) generator library for golang. - -Installing - - go get github.com/gorilla/feeds - -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. - -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{Name: "Jason Moiron", Email: "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{Name: "Jason Moiron", Email: "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, RSS, or JSON Feed versions of this feed easily - - atom, err := feed.ToAtom() - rss, err := feed.ToRss() - json, err := feed.ToJSON() - -You can also get access to the underlying objects that feeds uses to export its XML - - atomFeed := (&Atom{Feed: feed}).AtomFeed() - rssFeed := (&Rss{Feed: feed}).RssFeed() - jsonFeed := (&JSON{Feed: feed}).JSONFeed() - -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) - jsonFeed.NextUrl = "https://www.example.com/feed.json?page=2" - json, err := jsonFeed.ToJSON() -*/ -package feeds diff --git a/vendor/github.com/gorilla/feeds/feed.go b/vendor/github.com/gorilla/feeds/feed.go deleted file mode 100644 index 929c226c0..000000000 --- a/vendor/github.com/gorilla/feeds/feed.go +++ /dev/null @@ -1,146 +0,0 @@ -package feeds - -import ( - "encoding/json" - "encoding/xml" - "io" - "sort" - "time" -) - -type Link struct { - Href, Rel, Type, Length string -} - -type Author struct { - Name, Email string -} - -type Image struct { - Url, Title, Link string - Width, Height int -} - -type Enclosure struct { - Url, Length, Type string -} - -type Item struct { - Title string - Link *Link - Source *Link - Author *Author - Description string // used as description in rss, summary in atom - Id string // used as guid in rss, id in atom - IsPermaLink string // an optional parameter for guid in rss - Updated time.Time - Created time.Time - Enclosure *Enclosure - Content string -} - -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 -} - -// add a new Item to a Feed -func (f *Feed) Add(item *Item) { - f.Items = append(f.Items, item) -} - -// returns the first non-zero time formatted as a string or "" -func anyTimeFormat(format string, times ...time.Time) string { - for _, t := range times { - if !t.IsZero() { - return t.Format(format) - } - } - return "" -} - -// interface used by ToXML to get a object suitable for exporting XML. -type XmlFeed interface { - FeedXml() interface{} -} - -// turn a feed object (either a Feed, AtomFeed, or RssFeed) into xml -// returns an error if xml marshaling fails -func ToXML(feed XmlFeed) (string, error) { - x := feed.FeedXml() - data, err := xml.MarshalIndent(x, "", " ") - if err != nil { - return "", err - } - // strip empty line from default xml header - s := xml.Header[:len(xml.Header)-1] + string(data) - return s, nil -} - -// WriteXML writes a feed object (either a Feed, AtomFeed, or RssFeed) as XML into -// the writer. Returns an error if XML marshaling fails. -func WriteXML(feed XmlFeed, w io.Writer) error { - x := feed.FeedXml() - // write default xml header, without the newline - if _, err := w.Write([]byte(xml.Header[:len(xml.Header)-1])); err != nil { - return err - } - e := xml.NewEncoder(w) - e.Indent("", " ") - return e.Encode(x) -} - -// creates an Atom representation of this feed -func (f *Feed) ToAtom() (string, error) { - a := &Atom{f} - return ToXML(a) -} - -// WriteAtom writes an Atom representation of this feed to the writer. -func (f *Feed) WriteAtom(w io.Writer) error { - return WriteXML(&Atom{f}, w) -} - -// creates an Rss representation of this feed -func (f *Feed) ToRss() (string, error) { - r := &Rss{f} - return ToXML(r) -} - -// WriteRss writes an RSS representation of this feed to the writer. -func (f *Feed) WriteRss(w io.Writer) error { - return WriteXML(&Rss{f}, w) -} - -// ToJSON creates a JSON Feed representation of this feed -func (f *Feed) ToJSON() (string, error) { - j := &JSON{f} - return j.ToJSON() -} - -// WriteJSON writes an JSON representation of this feed to the writer. -func (f *Feed) WriteJSON(w io.Writer) error { - j := &JSON{f} - feed := j.JSONFeed() - - e := json.NewEncoder(w) - e.SetIndent("", " ") - return e.Encode(feed) -} - -// Sort sorts the Items in the feed with the given less function. -func (f *Feed) Sort(less func(a, b *Item) bool) { - lessFunc := func(i, j int) bool { - return less(f.Items[i], f.Items[j]) - } - sort.SliceStable(f.Items, lessFunc) -} diff --git a/vendor/github.com/gorilla/feeds/json.go b/vendor/github.com/gorilla/feeds/json.go deleted file mode 100644 index ae5deb76d..000000000 --- a/vendor/github.com/gorilla/feeds/json.go +++ /dev/null @@ -1,190 +0,0 @@ -package feeds - -import ( - "encoding/json" - "strings" - "time" -) - -const jsonFeedVersion = "https://jsonfeed.org/version/1.1" - -// JSONAuthor represents the author of the feed or of an individual item -// in the feed -type JSONAuthor struct { - Name string `json:"name,omitempty"` - Url string `json:"url,omitempty"` - Avatar string `json:"avatar,omitempty"` -} - -// JSONAttachment represents a related resource. Podcasts, for instance, would -// include an attachment that’s an audio or video file. -type JSONAttachment struct { - Url string `json:"url,omitempty"` - MIMEType string `json:"mime_type,omitempty"` - Title string `json:"title,omitempty"` - Size int32 `json:"size,omitempty"` - Duration time.Duration `json:"duration_in_seconds,omitempty"` -} - -// MarshalJSON implements the json.Marshaler interface. -// The Duration field is marshaled in seconds, all other fields are marshaled -// based upon the definitions in struct tags. -func (a *JSONAttachment) MarshalJSON() ([]byte, error) { - type EmbeddedJSONAttachment JSONAttachment - return json.Marshal(&struct { - Duration float64 `json:"duration_in_seconds,omitempty"` - *EmbeddedJSONAttachment - }{ - EmbeddedJSONAttachment: (*EmbeddedJSONAttachment)(a), - Duration: a.Duration.Seconds(), - }) -} - -// UnmarshalJSON implements the json.Unmarshaler interface. -// The Duration field is expected to be in seconds, all other field types -// match the struct definition. -func (a *JSONAttachment) UnmarshalJSON(data []byte) error { - type EmbeddedJSONAttachment JSONAttachment - var raw struct { - Duration float64 `json:"duration_in_seconds,omitempty"` - *EmbeddedJSONAttachment - } - raw.EmbeddedJSONAttachment = (*EmbeddedJSONAttachment)(a) - - err := json.Unmarshal(data, &raw) - if err != nil { - return err - } - - if raw.Duration > 0 { - nsec := int64(raw.Duration * float64(time.Second)) - raw.EmbeddedJSONAttachment.Duration = time.Duration(nsec) - } - - return nil -} - -// JSONItem represents a single entry/post for the feed. -type JSONItem struct { - Id string `json:"id"` - Url string `json:"url,omitempty"` - ExternalUrl string `json:"external_url,omitempty"` - Title string `json:"title,omitempty"` - ContentHTML string `json:"content_html,omitempty"` - ContentText string `json:"content_text,omitempty"` - Summary string `json:"summary,omitempty"` - Image string `json:"image,omitempty"` - BannerImage string `json:"banner_,omitempty"` - PublishedDate *time.Time `json:"date_published,omitempty"` - ModifiedDate *time.Time `json:"date_modified,omitempty"` - Author *JSONAuthor `json:"author,omitempty"` // deprecated in JSON Feed v1.1, keeping for backwards compatibility - Authors []*JSONAuthor `json:"authors,omitempty"` - Tags []string `json:"tags,omitempty"` - Attachments []JSONAttachment `json:"attachments,omitempty"` -} - -// JSONHub describes an endpoint that can be used to subscribe to real-time -// notifications from the publisher of this feed. -type JSONHub struct { - Type string `json:"type"` - Url string `json:"url"` -} - -// JSONFeed represents a syndication feed in the JSON Feed Version 1 format. -// Matching the specification found here: https://jsonfeed.org/version/1. -type JSONFeed struct { - Version string `json:"version"` - Title string `json:"title"` - Language string `json:"language,omitempty"` - HomePageUrl string `json:"home_page_url,omitempty"` - FeedUrl string `json:"feed_url,omitempty"` - Description string `json:"description,omitempty"` - UserComment string `json:"user_comment,omitempty"` - NextUrl string `json:"next_url,omitempty"` - Icon string `json:"icon,omitempty"` - Favicon string `json:"favicon,omitempty"` - Author *JSONAuthor `json:"author,omitempty"` // deprecated in JSON Feed v1.1, keeping for backwards compatibility - Authors []*JSONAuthor `json:"authors,omitempty"` - Expired *bool `json:"expired,omitempty"` - Hubs []*JSONHub `json:"hubs,omitempty"` - Items []*JSONItem `json:"items,omitempty"` -} - -// JSON is used to convert a generic Feed to a JSONFeed. -type JSON struct { - *Feed -} - -// ToJSON encodes f into a JSON string. Returns an error if marshalling fails. -func (f *JSON) ToJSON() (string, error) { - return f.JSONFeed().ToJSON() -} - -// ToJSON encodes f into a JSON string. Returns an error if marshalling fails. -func (f *JSONFeed) ToJSON() (string, error) { - data, err := json.MarshalIndent(f, "", " ") - if err != nil { - return "", err - } - - return string(data), nil -} - -// JSONFeed creates a new JSONFeed with a generic Feed struct's data. -func (f *JSON) JSONFeed() *JSONFeed { - feed := &JSONFeed{ - Version: jsonFeedVersion, - Title: f.Title, - Description: f.Description, - } - - if f.Link != nil { - feed.HomePageUrl = f.Link.Href - } - if f.Author != nil { - author := &JSONAuthor{ - Name: f.Author.Name, - } - feed.Author = author - feed.Authors = []*JSONAuthor{author} - } - for _, e := range f.Items { - feed.Items = append(feed.Items, newJSONItem(e)) - } - return feed -} - -func newJSONItem(i *Item) *JSONItem { - item := &JSONItem{ - Id: i.Id, - Title: i.Title, - Summary: i.Description, - - ContentHTML: i.Content, - } - - if i.Link != nil { - item.Url = i.Link.Href - } - if i.Source != nil { - item.ExternalUrl = i.Source.Href - } - if i.Author != nil { - author := &JSONAuthor{ - Name: i.Author.Name, - } - item.Author = author - item.Authors = []*JSONAuthor{author} - } - if !i.Created.IsZero() { - item.PublishedDate = &i.Created - } - if !i.Updated.IsZero() { - item.ModifiedDate = &i.Updated - } - if i.Enclosure != nil && strings.HasPrefix(i.Enclosure.Type, "image/") { - item.Image = i.Enclosure.Url - } - - return item -} diff --git a/vendor/github.com/gorilla/feeds/rss.go b/vendor/github.com/gorilla/feeds/rss.go deleted file mode 100644 index 9326cef8b..000000000 --- a/vendor/github.com/gorilla/feeds/rss.go +++ /dev/null @@ -1,183 +0,0 @@ -package feeds - -// rss support -// validation done according to spec here: -// http://cyber.law.harvard.edu/rss/rss.html - -import ( - "encoding/xml" - "fmt" - "time" -) - -// private wrapper around the RssFeed which gives us the <rss>..</rss> xml -type RssFeedXml struct { - XMLName xml.Name `xml:"rss"` - Version string `xml:"version,attr"` - ContentNamespace string `xml:"xmlns:content,attr"` - Channel *RssFeed -} - -type RssContent struct { - XMLName xml.Name `xml:"content:encoded"` - Content string `xml:",cdata"` -} - -type RssImage struct { - XMLName xml.Name `xml:"image"` - Url string `xml:"url"` - Title string `xml:"title"` - Link string `xml:"link"` - Width int `xml:"width,omitempty"` - Height int `xml:"height,omitempty"` -} - -type RssTextInput struct { - XMLName xml.Name `xml:"textInput"` - Title string `xml:"title"` - Description string `xml:"description"` - Name string `xml:"name"` - Link string `xml:"link"` -} - -type RssFeed struct { - XMLName xml.Name `xml:"channel"` - 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 `xml:"item"` -} - -type RssItem struct { - XMLName xml.Name `xml:"item"` - Title string `xml:"title"` // required - Link string `xml:"link"` // required - Description string `xml:"description"` // required - Content *RssContent - Author string `xml:"author,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"` -} - -type RssEnclosure struct { - //RSS 2.0 <enclosure url="http://example.com/file.mp3" length="123456789" type="audio/mpeg" /> - XMLName xml.Name `xml:"enclosure"` - Url string `xml:"url,attr"` - Length string `xml:"length,attr"` - Type string `xml:"type,attr"` -} - -type RssGuid struct { - //RSS 2.0 <guid isPermaLink="true">http://inessential.com/2002/09/01.php#a2</guid> - XMLName xml.Name `xml:"guid"` - Id string `xml:",chardata"` - IsPermaLink string `xml:"isPermaLink,attr,omitempty"` // "true", "false", or an empty string -} - -type Rss struct { - *Feed -} - -// create a new RssItem with a generic Item struct's data -func newRssItem(i *Item) *RssItem { - item := &RssItem{ - Title: i.Title, - Description: i.Description, - PubDate: anyTimeFormat(time.RFC1123Z, i.Created, i.Updated), - } - if i.Id != "" { - item.Guid = &RssGuid{Id: i.Id, IsPermaLink: i.IsPermaLink} - } - if i.Link != nil { - item.Link = i.Link.Href - } - if len(i.Content) > 0 { - item.Content = &RssContent{Content: i.Content} - } - if i.Source != nil { - item.Source = i.Source.Href - } - - // Define a closure - if i.Enclosure != nil && i.Enclosure.Type != "" && i.Enclosure.Length != "" { - item.Enclosure = &RssEnclosure{Url: i.Enclosure.Url, Type: i.Enclosure.Type, Length: i.Enclosure.Length} - } - - if i.Author != nil { - item.Author = i.Author.Name - } - return item -} - -// create a new RssFeed with a generic Feed struct's data -func (r *Rss) RssFeed() *RssFeed { - pub := anyTimeFormat(time.RFC1123Z, r.Created, r.Updated) - build := anyTimeFormat(time.RFC1123Z, r.Updated) - author := "" - if r.Author != nil { - author = r.Author.Email - if len(r.Author.Name) > 0 { - author = fmt.Sprintf("%s (%s)", r.Author.Email, r.Author.Name) - } - } - - var image *RssImage - if r.Image != nil { - image = &RssImage{Url: r.Image.Url, Title: r.Image.Title, Link: r.Image.Link, Width: r.Image.Width, Height: r.Image.Height} - } - - var href string - if r.Link != nil { - href = r.Link.Href - } - channel := &RssFeed{ - Title: r.Title, - Link: href, - Description: r.Description, - ManagingEditor: author, - PubDate: pub, - LastBuildDate: build, - Copyright: r.Copyright, - Image: image, - } - for _, i := range r.Items { - channel.Items = append(channel.Items, newRssItem(i)) - } - return channel -} - -// FeedXml returns an XML-Ready object for an Rss object -func (r *Rss) FeedXml() interface{} { - // only generate version 2.0 feeds for now - return r.RssFeed().FeedXml() - -} - -// FeedXml returns an XML-ready object for an RssFeed object -func (r *RssFeed) FeedXml() interface{} { - return &RssFeedXml{ - Version: "2.0", - Channel: r, - ContentNamespace: "http://purl.org/rss/1.0/modules/content/", - } -} diff --git a/vendor/github.com/gorilla/feeds/test.atom b/vendor/github.com/gorilla/feeds/test.atom deleted file mode 100644 index aa1521481..000000000 --- a/vendor/github.com/gorilla/feeds/test.atom +++ /dev/null @@ -1,92 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<feed xmlns:atom="http://www.w3.org/2005/Atom"> - <title><![CDATA[Lorem ipsum feed for an interval of 1 minutes]]></title> - <description><![CDATA[This is a constantly updating lorem ipsum feed]]></description> - <link>http://example.com/</link> - <generator>RSS for Node</generator> - <lastBuildDate>Tue, 30 Oct 2018 23:22:37 GMT</lastBuildDate> - <author><![CDATA[John Smith]]></author> - <pubDate>Tue, 30 Oct 2018 23:22:00 GMT</pubDate> - <copyright><![CDATA[Michael Bertolacci, licensed under a Creative Commons Attribution 3.0 Unported License.]]></copyright> - <ttl>60</ttl> - <entry> - <title><![CDATA[Lorem ipsum 2018-10-30T23:22:00+00:00]]></title> - <description><![CDATA[Exercitation ut Lorem sint proident.]]></description> - <link>http://example.com/test/1540941720</link> - <guid isPermaLink="true">http://example.com/test/1540941720</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:22:00 GMT</pubDate> - </entry> - <entry> - <title><![CDATA[Lorem ipsum 2018-10-30T23:21:00+00:00]]></title> - <description><![CDATA[Ea est do quis fugiat exercitation.]]></description> - <link>http://example.com/test/1540941660</link> - <guid isPermaLink="true">http://example.com/test/1540941660</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:21:00 GMT</pubDate> - </entry> - <entry> - <title><![CDATA[Lorem ipsum 2018-10-30T23:20:00+00:00]]></title> - <description><![CDATA[Ipsum velit cillum ad laborum sit nulla exercitation consequat sint veniam culpa veniam voluptate incididunt.]]></description> - <link>http://example.com/test/1540941600</link> - <guid isPermaLink="true">http://example.com/test/1540941600</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:20:00 GMT</pubDate> - </entry> - <entry> - <title><![CDATA[Lorem ipsum 2018-10-30T23:19:00+00:00]]></title> - <description><![CDATA[Ullamco pariatur aliqua consequat ea veniam id qui incididunt laborum.]]></description> - <link>http://example.com/test/1540941540</link> - <guid isPermaLink="true">http://example.com/test/1540941540</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:19:00 GMT</pubDate> - </entry> - <entry> - <title><![CDATA[Lorem ipsum 2018-10-30T23:18:00+00:00]]></title> - <description><![CDATA[Velit proident aliquip aliquip anim mollit voluptate laboris voluptate et occaecat occaecat laboris ea nulla.]]></description> - <link>http://example.com/test/1540941480</link> - <guid isPermaLink="true">http://example.com/test/1540941480</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:18:00 GMT</pubDate> - </entry> - <entry> - <title><![CDATA[Lorem ipsum 2018-10-30T23:17:00+00:00]]></title> - <description><![CDATA[Do in quis mollit consequat id in minim laborum sint exercitation laborum elit officia.]]></description> - <link>http://example.com/test/1540941420</link> - <guid isPermaLink="true">http://example.com/test/1540941420</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:17:00 GMT</pubDate> - </entry> - <entry> - <title><![CDATA[Lorem ipsum 2018-10-30T23:16:00+00:00]]></title> - <description><![CDATA[Irure id sint ullamco Lorem magna consectetur officia adipisicing duis incididunt.]]></description> - <link>http://example.com/test/1540941360</link> - <guid isPermaLink="true">http://example.com/test/1540941360</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:16:00 GMT</pubDate> - </entry> - <entry> - <title><![CDATA[Lorem ipsum 2018-10-30T23:15:00+00:00]]></title> - <description><![CDATA[Sunt anim excepteur esse nisi commodo culpa laborum exercitation ad anim ex elit.]]></description> - <link>http://example.com/test/1540941300</link> - <guid isPermaLink="true">http://example.com/test/1540941300</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:15:00 GMT</pubDate> - </entry> - <entry> - <title><![CDATA[Lorem ipsum 2018-10-30T23:14:00+00:00]]></title> - <description><![CDATA[Excepteur aliquip fugiat ex labore nisi.]]></description> - <link>http://example.com/test/1540941240</link> - <guid isPermaLink="true">http://example.com/test/1540941240</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:14:00 GMT</pubDate> - </entry> - <entry> - <title><![CDATA[Lorem ipsum 2018-10-30T23:13:00+00:00]]></title> - <description><![CDATA[Id proident adipisicing proident pariatur aute pariatur pariatur dolor dolor in voluptate dolor.]]></description> - <link>http://example.com/test/1540941180</link> - <guid isPermaLink="true">http://example.com/test/1540941180</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:13:00 GMT</pubDate> - </entry> -</feed>
\ No newline at end of file diff --git a/vendor/github.com/gorilla/feeds/test.rss b/vendor/github.com/gorilla/feeds/test.rss deleted file mode 100644 index 8d912aba5..000000000 --- a/vendor/github.com/gorilla/feeds/test.rss +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rss xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:content="http://purl.org/rss/1.0/modules/content/" - xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"> - <channel> - <title><![CDATA[Lorem ipsum feed for an interval of 1 minutes]]></title> - <description><![CDATA[This is a constantly updating lorem ipsum feed]]></description> - <link>http://example.com/</link> - <generator>RSS for Node</generator> - <lastBuildDate>Tue, 30 Oct 2018 23:22:37 GMT</lastBuildDate> - <author><![CDATA[John Smith]]></author> - <pubDate>Tue, 30 Oct 2018 23:22:00 GMT</pubDate> - <copyright><![CDATA[Michael Bertolacci, licensed under a Creative Commons Attribution 3.0 Unported License.]]></copyright> - <ttl>60</ttl> - <item> - <title><![CDATA[Lorem ipsum 2018-10-30T23:22:00+00:00]]></title> - <description><![CDATA[Exercitation ut Lorem sint proident.]]></description> - <link>http://example.com/test/1540941720</link> - <guid isPermaLink="true">http://example.com/test/1540941720</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:22:00 GMT</pubDate> - </item> - <item> - <title><![CDATA[Lorem ipsum 2018-10-30T23:21:00+00:00]]></title> - <description><![CDATA[Ea est do quis fugiat exercitation.]]></description> - <link>http://example.com/test/1540941660</link> - <guid isPermaLink="true">http://example.com/test/1540941660</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:21:00 GMT</pubDate> - </item> - <item> - <title><![CDATA[Lorem ipsum 2018-10-30T23:20:00+00:00]]></title> - <description><![CDATA[Ipsum velit cillum ad laborum sit nulla exercitation consequat sint veniam culpa veniam voluptate incididunt.]]></description> - <link>http://example.com/test/1540941600</link> - <guid isPermaLink="true">http://example.com/test/1540941600</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:20:00 GMT</pubDate> - </item> - <item> - <title><![CDATA[Lorem ipsum 2018-10-30T23:19:00+00:00]]></title> - <description><![CDATA[Ullamco pariatur aliqua consequat ea veniam id qui incididunt laborum.]]></description> - <link>http://example.com/test/1540941540</link> - <guid isPermaLink="true">http://example.com/test/1540941540</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:19:00 GMT</pubDate> - </item> - <item> - <title><![CDATA[Lorem ipsum 2018-10-30T23:18:00+00:00]]></title> - <description><![CDATA[Velit proident aliquip aliquip anim mollit voluptate laboris voluptate et occaecat occaecat laboris ea nulla.]]></description> - <link>http://example.com/test/1540941480</link> - <guid isPermaLink="true">http://example.com/test/1540941480</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:18:00 GMT</pubDate> - </item> - <item> - <title><![CDATA[Lorem ipsum 2018-10-30T23:17:00+00:00]]></title> - <description><![CDATA[Do in quis mollit consequat id in minim laborum sint exercitation laborum elit officia.]]></description> - <link>http://example.com/test/1540941420</link> - <guid isPermaLink="true">http://example.com/test/1540941420</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:17:00 GMT</pubDate> - </item> - <item> - <title><![CDATA[Lorem ipsum 2018-10-30T23:16:00+00:00]]></title> - <description><![CDATA[Irure id sint ullamco Lorem magna consectetur officia adipisicing duis incididunt.]]></description> - <link>http://example.com/test/1540941360</link> - <guid isPermaLink="true">http://example.com/test/1540941360</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:16:00 GMT</pubDate> - </item> - <item> - <title><![CDATA[Lorem ipsum 2018-10-30T23:15:00+00:00]]></title> - <description><![CDATA[Sunt anim excepteur esse nisi commodo culpa laborum exercitation ad anim ex elit.]]></description> - <link>http://example.com/test/1540941300</link> - <guid isPermaLink="true">http://example.com/test/1540941300</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:15:00 GMT</pubDate> - </item> - <item> - <title><![CDATA[Lorem ipsum 2018-10-30T23:14:00+00:00]]></title> - <description><![CDATA[Excepteur aliquip fugiat ex labore nisi.]]></description> - <link>http://example.com/test/1540941240</link> - <guid isPermaLink="true">http://example.com/test/1540941240</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:14:00 GMT</pubDate> - </item> - <item> - <title><![CDATA[Lorem ipsum 2018-10-30T23:13:00+00:00]]></title> - <description><![CDATA[Id proident adipisicing proident pariatur aute pariatur pariatur dolor dolor in voluptate dolor.]]></description> - <link>http://example.com/test/1540941180</link> - <guid isPermaLink="true">http://example.com/test/1540941180</guid> - <dc:creator><![CDATA[John Smith]]></dc:creator> - <pubDate>Tue, 30 Oct 2018 23:13:00 GMT</pubDate> - </item> - </channel> -</rss>
\ No newline at end of file diff --git a/vendor/github.com/gorilla/feeds/to-implement.md b/vendor/github.com/gorilla/feeds/to-implement.md deleted file mode 100644 index 45fd1e75e..000000000 --- a/vendor/github.com/gorilla/feeds/to-implement.md +++ /dev/null @@ -1,20 +0,0 @@ -[Full iTunes list](https://help.apple.com/itc/podcasts_connect/#/itcb54353390) - -[Example of ideal iTunes RSS feed](https://help.apple.com/itc/podcasts_connect/#/itcbaf351599) - -``` -<itunes:author> -<itunes:block> -<itunes:catergory> -<itunes:image> -<itunes:duration> -<itunes:explicit> -<itunes:isClosedCaptioned> -<itunes:order> -<itunes:complete> -<itunes:new-feed-url> -<itunes:owner> -<itunes:subtitle> -<itunes:summary> -<language> -```
\ No newline at end of file diff --git a/vendor/github.com/gorilla/feeds/uuid.go b/vendor/github.com/gorilla/feeds/uuid.go deleted file mode 100644 index 51bbafe13..000000000 --- a/vendor/github.com/gorilla/feeds/uuid.go +++ /dev/null @@ -1,27 +0,0 @@ -package feeds - -// relevant bits from https://github.com/abneptis/GoUUID/blob/master/uuid.go - -import ( - "crypto/rand" - "fmt" -) - -type UUID [16]byte - -// create a new uuid v4 -func NewUUID() *UUID { - u := &UUID{} - _, err := rand.Read(u[:16]) - if err != nil { - panic(err) - } - - u[8] = (u[8] | 0x80) & 0xBf - u[6] = (u[6] | 0x40) & 0x4f - return u -} - -func (u *UUID) String() string { - return fmt.Sprintf("%x-%x-%x-%x-%x", u[:4], u[4:6], u[6:8], u[8:10], u[10:]) -} |