aboutsummaryrefslogtreecommitdiffhomepage
path: root/model/feed.go
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2018-10-14 21:43:48 -0700
committerGravatar Frédéric Guillot <fred@miniflux.net>2018-10-14 21:43:48 -0700
commit778346b0b04bc52c89529668b37c1086bebe1674 (patch)
tree957b4d049210af1753bfa6690a2810f6634193ad /model/feed.go
parent5870f0426002c8e26a9ff472b23e15d7bf1235f7 (diff)
Simplify feed fetcher
- Add browser package to handle HTTP errors - Reduce code duplication
Diffstat (limited to 'model/feed.go')
-rw-r--r--model/feed.go45
1 files changed, 44 insertions, 1 deletions
diff --git a/model/feed.go b/model/feed.go
index 0ace098..63957c6 100644
--- a/model/feed.go
+++ b/model/feed.go
@@ -7,9 +7,11 @@ package model // import "miniflux.app/model"
import (
"fmt"
"time"
+
+ "miniflux.app/http/client"
)
-// Feed represents a feed in the database.
+// Feed represents a feed in the application.
type Feed struct {
ID int64 `json:"id"`
UserID int64 `json:"user_id"`
@@ -43,5 +45,46 @@ func (f *Feed) String() string {
)
}
+// WithClientResponse updates feed attributes from an HTTP request.
+func (f *Feed) WithClientResponse(response *client.Response) {
+ f.EtagHeader = response.ETag
+ f.LastModifiedHeader = response.LastModified
+ f.FeedURL = response.EffectiveURL
+}
+
+// WithCategoryID initializes the category attribute of the feed.
+func (f *Feed) WithCategoryID(categoryID int64) {
+ f.Category = &Category{ID: categoryID}
+}
+
+// WithBrowsingParameters defines browsing parameters.
+func (f *Feed) WithBrowsingParameters(crawler bool, userAgent, username, password string) {
+ f.Crawler = crawler
+ f.UserAgent = userAgent
+ f.Username = username
+ f.Password = password
+}
+
+// WithError adds a new error message and increment the error counter.
+func (f *Feed) WithError(message string) {
+ f.ParsingErrorCount++
+ f.ParsingErrorMsg = message
+}
+
+// ResetErrorCounter removes all previous errors.
+func (f *Feed) ResetErrorCounter() {
+ f.ParsingErrorCount = 0
+ f.ParsingErrorMsg = ""
+}
+
+// CheckedNow set attribute values when the feed is refreshed.
+func (f *Feed) CheckedNow() {
+ f.CheckedAt = time.Now()
+
+ if f.SiteURL == "" {
+ f.SiteURL = f.FeedURL
+ }
+}
+
// Feeds is a list of feed
type Feeds []*Feed