diff options
author | Frédéric Guillot <fred@miniflux.net> | 2018-10-26 19:49:49 -0700 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2018-10-26 19:49:49 -0700 |
commit | f6028f38634c548d13232fc9b86a9428e5ec8c81 (patch) | |
tree | 08fdb649aa60c3ea3a46283c0ca45e58afc5fb05 | |
parent | 92c98bd9860a2839248d5d2c66488190ce4d81d9 (diff) |
Improve Fever middleware and handle groupID=0
-rw-r--r-- | fever/fever.go | 10 | ||||
-rw-r--r-- | middleware/fever.go | 11 | ||||
-rw-r--r-- | storage/entry.go | 5 |
3 files changed, 22 insertions, 4 deletions
diff --git a/fever/fever.go b/fever/fever.go index cb65874..4a89f45 100644 --- a/fever/fever.go +++ b/fever/fever.go @@ -573,7 +573,15 @@ func (c *Controller) handleWriteGroups(w http.ResponseWriter, r *http.Request) { } go func() { - if err := c.store.MarkCategoryAsRead(userID, groupID, before); err != nil { + var err error + + if groupID == 0 { + err = c.store.MarkAllAsRead(userID) + } else { + err = c.store.MarkCategoryAsRead(userID, groupID, before) + } + + if err != nil { logger.Error("[Fever] MarkCategoryAsRead failed: %v", err) } }() diff --git a/middleware/fever.go b/middleware/fever.go index e4dc1d4..7b96677 100644 --- a/middleware/fever.go +++ b/middleware/fever.go @@ -13,21 +13,28 @@ import ( "miniflux.app/logger" ) +var feverAuthFailureResponse = map[string]int{"api_version": 3, "auth": 0} + // FeverAuth handles Fever API authentication. func (m *Middleware) FeverAuth(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { apiKey := r.FormValue("api_key") + if apiKey == "" { + logger.Info("[Middleware:Fever] No API key provided") + json.OK(w, r, feverAuthFailureResponse) + return + } user, err := m.store.UserByFeverToken(apiKey) if err != nil { logger.Error("[Middleware:Fever] %v", err) - json.OK(w, r, map[string]int{"api_version": 3, "auth": 0}) + json.OK(w, r, feverAuthFailureResponse) return } if user == nil { logger.Info("[Middleware:Fever] No user found with this API key") - json.OK(w, r, map[string]int{"api_version": 3, "auth": 0}) + json.OK(w, r, feverAuthFailureResponse) return } diff --git a/storage/entry.go b/storage/entry.go index 0405deb..7617bb6 100644 --- a/storage/entry.go +++ b/storage/entry.go @@ -261,11 +261,14 @@ func (s *Storage) MarkAllAsRead(userID int64) error { defer timer.ExecutionTime(time.Now(), fmt.Sprintf("[Storage:MarkAllAsRead] userID=%d", userID)) query := `UPDATE entries SET status=$1 WHERE user_id=$2 AND status=$3` - _, err := s.db.Exec(query, model.EntryStatusRead, userID, model.EntryStatusUnread) + result, err := s.db.Exec(query, model.EntryStatusRead, userID, model.EntryStatusUnread) if err != nil { return fmt.Errorf("unable to mark all entries as read: %v", err) } + count, _ := result.RowsAffected() + logger.Debug("[Storage:MarkAllAsRead] %d items marked as read", count) + return nil } |