From 94caf7a43b4ead672837b608aa2f670bdff7cb45 Mon Sep 17 00:00:00 2001 From: Naoki Kishi Date: Tue, 4 Aug 2020 15:19:53 +0900 Subject: [PATCH] Add ToJSONReader, ToRSSReader and ToAtomReader --- README.md | 18 ++++++++++++++---- generator.go | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3d1bc54..4170cba 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,12 @@ go get -u github.com/p1ass/feeder ### Examples ```go -import "github.com/p1ass/feeder" +package main + +import ( + "github.com/p1ass/feeder" + "time" +) func crawl(){ rss1 := feeder.NewRSSCrawler("https://example.com/rss1") @@ -30,9 +35,14 @@ func crawl(){ Items: items, } - json, err := feed.ToJSON() // json is a `string` - rss, err := feed.ToRSS() // rss is a `string` - atom, err := feed.ToAtom() // atom is a `string` + json, err := feed.ToJSON() // json is string + rss, err := feed.ToRSS() // rss is string + atom, err := feed.ToAtom() // atom is string + + jsonReader, err := feed.ToJSONReader() // jsonReader is a io.Reader + rssReader, err := feed.ToRSSReader() // jsonReader is a io.Reader + atomReader, err := feed.ToAtomReader() // jsonReader is a io.Reader + } ``` diff --git a/generator.go b/generator.go index d7c3337..448543e 100644 --- a/generator.go +++ b/generator.go @@ -1,22 +1,54 @@ package feeder -import "github.com/p1ass/feeds" +import ( + "io" + "strings" + + "github.com/p1ass/feeds" +) // ToRSS generates RSS feed func (f *Feed) ToRSS() (string, error) { return f.convert().ToRss() } +// ToRSSReader generates RSS feed and return io.Reader. +func (f *Feed) ToRSSReader() (io.Reader, error) { + rss, err := f.convert().ToRss() + if err != nil { + return nil, err + } + return strings.NewReader(rss), nil +} + // ToAtom generates Atom feed func (f *Feed) ToAtom() (string, error) { return f.convert().ToAtom() } +// ToAtomReader generates Atom feed and return io.Reader. +func (f *Feed) ToAtomReader() (io.Reader, error) { + atom, err := f.convert().ToAtom() + if err != nil { + return nil, err + } + return strings.NewReader(atom), nil +} + // ToJSON generates JSON feed func (f *Feed) ToJSON() (string, error) { return f.convert().ToJSON() } +// ToJSONReader generates JSON feed and return io.Reader. +func (f *Feed) ToJSONReader() (io.Reader, error) { + json, err := f.convert().ToJSON() + if err != nil { + return nil, err + } + return strings.NewReader(json), nil +} + func (l *Link) convert() *feeds.Link { return &feeds.Link{ l.Href,