aboutsummaryrefslogtreecommitdiffhomepage
path: root/reader/processor
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2017-12-11 22:16:32 -0800
committerGravatar Frédéric Guillot <fred@miniflux.net>2017-12-11 22:16:32 -0800
commit33445e5b681bbdffaf0925ed020ecdcc49687f15 (patch)
tree4c82a43cd84e57823c0c570a00380b4eb8f8390b /reader/processor
parent87ccad5c7f1edf8bce37af547ca1659326398fa8 (diff)
Add the possibility to define rewrite rules for each feed
Diffstat (limited to 'reader/processor')
-rw-r--r--reader/processor/processor.go33
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}
}