From 5cacae6cf2e1f2f59cf294139fd0c626a3b256fc Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Sun, 29 Apr 2018 18:56:40 -0700 Subject: Add API endpoint to import OPML file --- api/feed.go | 13 ------------- api/opml.go | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 13 deletions(-) create mode 100644 api/opml.go (limited to 'api') diff --git a/api/feed.go b/api/feed.go index 72eaa41..f6e3c16 100644 --- a/api/feed.go +++ b/api/feed.go @@ -11,8 +11,6 @@ import ( "github.com/miniflux/miniflux/http/context" "github.com/miniflux/miniflux/http/request" "github.com/miniflux/miniflux/http/response/json" - "github.com/miniflux/miniflux/http/response/xml" - "github.com/miniflux/miniflux/reader/opml" ) // CreateFeed is the API handler to create a new feed. @@ -143,17 +141,6 @@ func (c *Controller) GetFeeds(w http.ResponseWriter, r *http.Request) { json.OK(w, feeds) } -// Export is the API handler that incoves an OPML export. -func (c *Controller) Export(w http.ResponseWriter, r *http.Request) { - opmlHandler := opml.NewHandler(c.store) - opml, err := opmlHandler.Export(context.New(r).UserID()) - if err != nil { - json.ServerError(w, errors.New("unable to export feeds to OPML")) - } - - xml.OK(w, opml) -} - // GetFeed is the API handler to get a feed. func (c *Controller) GetFeed(w http.ResponseWriter, r *http.Request) { feedID, err := request.IntParam(r, "feedID") diff --git a/api/opml.go b/api/opml.go new file mode 100644 index 0000000..8613ded --- /dev/null +++ b/api/opml.go @@ -0,0 +1,39 @@ +// Copyright 2018 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 ( + "net/http" + + "github.com/miniflux/miniflux/http/context" + "github.com/miniflux/miniflux/http/response/json" + "github.com/miniflux/miniflux/http/response/xml" + "github.com/miniflux/miniflux/reader/opml" +) + +// Export is the API handler that export feeds to OPML. +func (c *Controller) Export(w http.ResponseWriter, r *http.Request) { + opmlHandler := opml.NewHandler(c.store) + opml, err := opmlHandler.Export(context.New(r).UserID()) + if err != nil { + json.ServerError(w, err) + return + } + + xml.OK(w, opml) +} + +// Import is the API handler that import an OPML file. +func (c *Controller) Import(w http.ResponseWriter, r *http.Request) { + opmlHandler := opml.NewHandler(c.store) + err := opmlHandler.Import(context.New(r).UserID(), r.Body) + defer r.Body.Close() + if err != nil { + json.ServerError(w, err) + return + } + + json.Created(w, map[string]string{"message": "Feeds imported successfully"}) +} -- cgit v1.2.3