diff options
Diffstat (limited to 'api/opml.go')
-rw-r--r-- | api/opml.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/api/opml.go b/api/opml.go new file mode 100644 index 00000000..8613ded7 --- /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"}) +} |