diff options
author | Frédéric Guillot <fred@miniflux.net> | 2017-12-11 22:16:32 -0800 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2017-12-11 22:16:32 -0800 |
commit | 33445e5b681bbdffaf0925ed020ecdcc49687f15 (patch) | |
tree | 4c82a43cd84e57823c0c570a00380b4eb8f8390b /reader/processor | |
parent | 87ccad5c7f1edf8bce37af547ca1659326398fa8 (diff) |
Add the possibility to define rewrite rules for each feed
Diffstat (limited to 'reader/processor')
-rw-r--r-- | reader/processor/processor.go | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/reader/processor/processor.go b/reader/processor/processor.go index ef93b9a..06dad43 100644 --- a/reader/processor/processor.go +++ b/reader/processor/processor.go @@ -5,12 +5,37 @@ package processor import ( + "github.com/miniflux/miniflux2/model" "github.com/miniflux/miniflux2/reader/rewrite" "github.com/miniflux/miniflux2/reader/sanitizer" ) -// ItemContentProcessor executes a set of functions to sanitize and alter item contents. -func ItemContentProcessor(url, content string) string { - content = sanitizer.Sanitize(url, content) - return rewrite.Rewriter(url, content) +// FeedProcessor handles the processing of feed contents. +type FeedProcessor struct { + feed *model.Feed + scraperRules string + rewriteRules string +} + +// WithScraperRules adds scraper rules to the processing. +func (f *FeedProcessor) WithScraperRules(rules string) { + f.scraperRules = rules +} + +// WithRewriteRules adds rewrite rules to the processing. +func (f *FeedProcessor) WithRewriteRules(rules string) { + f.rewriteRules = rules +} + +// Process applies rewrite and scraper rules. +func (f *FeedProcessor) Process() { + for _, entry := range f.feed.Entries { + entry.Content = sanitizer.Sanitize(entry.URL, entry.Content) + entry.Content = rewrite.Rewriter(entry.URL, entry.Content, f.rewriteRules) + } +} + +// NewFeedProcessor returns a new FeedProcessor. +func NewFeedProcessor(feed *model.Feed) *FeedProcessor { + return &FeedProcessor{feed: feed} } |