From 36dab8b5182215d53512525991cc23523bdf23dc Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Sat, 9 Jun 2018 19:13:41 -0700 Subject: Add more filters for API call /entries New filters: - before (unix timestamp) - before_entry_id - after - after_entry_id - starred (boolean) --- api/entry.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'api') diff --git a/api/entry.go b/api/entry.go index 390f9ec..6d1167b 100644 --- a/api/entry.go +++ b/api/entry.go @@ -7,11 +7,13 @@ package api import ( "errors" "net/http" + "time" "github.com/miniflux/miniflux/http/context" "github.com/miniflux/miniflux/http/request" "github.com/miniflux/miniflux/http/response/json" "github.com/miniflux/miniflux/model" + "github.com/miniflux/miniflux/storage" ) // GetFeedEntry is the API handler to get a single feed entry. @@ -116,6 +118,7 @@ func (c *Controller) GetFeedEntries(w http.ResponseWriter, r *http.Request) { builder.WithDirection(direction) builder.WithOffset(offset) builder.WithLimit(limit) + configureFilters(builder, r) entries, err := builder.GetEntries() if err != nil { @@ -167,6 +170,7 @@ func (c *Controller) GetEntries(w http.ResponseWriter, r *http.Request) { builder.WithDirection(direction) builder.WithOffset(offset) builder.WithLimit(limit) + configureFilters(builder, r) entries, err := builder.GetEntries() if err != nil { @@ -219,3 +223,29 @@ func (c *Controller) ToggleBookmark(w http.ResponseWriter, r *http.Request) { json.NoContent(w) } + +func configureFilters(builder *storage.EntryQueryBuilder, r *http.Request) { + beforeEntryID := request.QueryInt64Param(r, "before_entry_id", 0) + if beforeEntryID != 0 { + builder.BeforeEntryID(beforeEntryID) + } + + afterEntryID := request.QueryInt64Param(r, "after_entry_id", 0) + if afterEntryID != 0 { + builder.AfterEntryID(afterEntryID) + } + + beforeTimestamp := request.QueryInt64Param(r, "before", 0) + if beforeTimestamp != 0 { + builder.BeforeDate(time.Unix(beforeTimestamp, 0)) + } + + afterTimestamp := request.QueryInt64Param(r, "after", 0) + if afterTimestamp != 0 { + builder.AfterDate(time.Unix(afterTimestamp, 0)) + } + + if request.HasQueryParam(r, "starred") { + builder.WithStarred() + } +} -- cgit v1.2.3