aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2018-10-26 19:49:49 -0700
committerGravatar Frédéric Guillot <fred@miniflux.net>2018-10-26 19:49:49 -0700
commitf6028f38634c548d13232fc9b86a9428e5ec8c81 (patch)
tree08fdb649aa60c3ea3a46283c0ca45e58afc5fb05
parent92c98bd9860a2839248d5d2c66488190ce4d81d9 (diff)
Improve Fever middleware and handle groupID=0
-rw-r--r--fever/fever.go10
-rw-r--r--middleware/fever.go11
-rw-r--r--storage/entry.go5
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
}