aboutsummaryrefslogtreecommitdiffhomepage
path: root/api/icon.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/icon.go')
-rw-r--r--api/icon.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/api/icon.go b/api/icon.go
new file mode 100644
index 0000000..7734dbf
--- /dev/null
+++ b/api/icon.go
@@ -0,0 +1,43 @@
+// Copyright 2017 Frédéric Guillot. All rights reserved.
+// Use of this source code is governed by the Apache 2.0
+// license that can be found in the LICENSE file.
+
+package api
+
+import (
+ "errors"
+
+ "github.com/miniflux/miniflux/http/handler"
+)
+
+// FeedIcon returns a feed icon.
+func (c *Controller) FeedIcon(ctx *handler.Context, request *handler.Request, response *handler.Response) {
+ userID := ctx.UserID()
+ feedID, err := request.IntegerParam("feedID")
+ if err != nil {
+ response.JSON().BadRequest(err)
+ return
+ }
+
+ if !c.store.HasIcon(feedID) {
+ response.JSON().NotFound(errors.New("This feed doesn't have any icon"))
+ return
+ }
+
+ icon, err := c.store.IconByFeedID(userID, feedID)
+ if err != nil {
+ response.JSON().ServerError(errors.New("Unable to fetch feed icon"))
+ return
+ }
+
+ if icon == nil {
+ response.JSON().NotFound(errors.New("This feed doesn't have any icon"))
+ return
+ }
+
+ response.JSON().Standard(&feedIcon{
+ ID: icon.ID,
+ MimeType: icon.MimeType,
+ Data: icon.DataURL(),
+ })
+}