diff options
author | Frédéric Guillot <fred@miniflux.net> | 2018-06-09 19:13:41 -0700 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2018-06-09 19:13:41 -0700 |
commit | 36dab8b5182215d53512525991cc23523bdf23dc (patch) | |
tree | 90de1fd0e7a0d1a2481c1a21d41178ea91142af7 /api | |
parent | c5373ff2bffb3a3e3d37b3eb6bd1cdc733d9c590 (diff) |
Add more filters for API call /entries
New filters:
- before (unix timestamp)
- before_entry_id
- after
- after_entry_id
- starred (boolean)
Diffstat (limited to 'api')
-rw-r--r-- | api/entry.go | 30 |
1 files changed, 30 insertions, 0 deletions
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() + } +} |