diff options
author | 2023-10-20 19:39:32 -0700 | |
---|---|---|
committer | 2023-10-20 20:11:05 -0700 | |
commit | 5e6c054345e3c64c72a6e8612fe31a26edbdcfaa (patch) | |
tree | 98c20074e0abd7cfd800e1f4aa6ffbcf7d9f1ad1 /internal/reader/handler/handler.go | |
parent | ed35555d745a48ddb35eb338f7c29be3640f22da (diff) | |
download | v2-5e6c054345e3c64c72a6e8612fe31a26edbdcfaa.tar.gz v2-5e6c054345e3c64c72a6e8612fe31a26edbdcfaa.tar.zst v2-5e6c054345e3c64c72a6e8612fe31a26edbdcfaa.zip |
Take RSS TTL field into consideration to schedule next check date
Diffstat (limited to 'internal/reader/handler/handler.go')
-rw-r--r-- | internal/reader/handler/handler.go | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/internal/reader/handler/handler.go b/internal/reader/handler/handler.go index 4a87f92e..cfd03ce1 100644 --- a/internal/reader/handler/handler.go +++ b/internal/reader/handler/handler.go @@ -5,6 +5,7 @@ package handler // import "miniflux.app/v2/internal/reader/handler" import ( "log/slog" + "time" "miniflux.app/v2/internal/config" "miniflux.app/v2/internal/errors" @@ -185,6 +186,28 @@ func RefreshFeed(store *storage.Storage, userID, feedID int64, forceRefresh bool return parseErr } + // If the feed has a TTL defined, we use it to make sure we don't check it too often. + if updatedFeed.TTL > 0 { + minNextCheckAt := time.Now().Add(time.Minute * time.Duration(updatedFeed.TTL)) + slog.Debug("Feed TTL", + slog.Int64("user_id", userID), + slog.Int64("feed_id", feedID), + slog.Int("ttl", updatedFeed.TTL), + slog.Time("next_check_at", originalFeed.NextCheckAt), + ) + + if originalFeed.NextCheckAt.IsZero() || originalFeed.NextCheckAt.Before(minNextCheckAt) { + slog.Debug("Updating next check date based on TTL", + slog.Int64("user_id", userID), + slog.Int64("feed_id", feedID), + slog.Int("ttl", updatedFeed.TTL), + slog.Time("new_next_check_at", minNextCheckAt), + slog.Time("old_next_check_at", originalFeed.NextCheckAt), + ) + originalFeed.NextCheckAt = minNextCheckAt + } + } + originalFeed.Entries = updatedFeed.Entries processor.ProcessFeedEntries(store, originalFeed, user, forceRefresh) |