aboutsummaryrefslogtreecommitdiffhomepage
path: root/api
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2018-06-09 19:13:41 -0700
committerGravatar Frédéric Guillot <fred@miniflux.net>2018-06-09 19:13:41 -0700
commit36dab8b5182215d53512525991cc23523bdf23dc (patch)
tree90de1fd0e7a0d1a2481c1a21d41178ea91142af7 /api
parentc5373ff2bffb3a3e3d37b3eb6bd1cdc733d9c590 (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.go30
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()
+ }
+}