mirror of
https://github.com/nkanaev/yarr.git
synced 2025-09-13 18:00:05 +00:00
opml tweaks & fixes
This commit is contained in:
@@ -2,17 +2,18 @@ package server
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/nkanaev/yarr/src/assets"
|
||||
"github.com/nkanaev/yarr/src/auth"
|
||||
"github.com/nkanaev/yarr/src/router"
|
||||
"github.com/nkanaev/yarr/src/storage"
|
||||
"github.com/nkanaev/yarr/src/opml"
|
||||
"github.com/nkanaev/yarr/src/worker"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"math"
|
||||
"net/http"
|
||||
"reflect"
|
||||
|
||||
"github.com/nkanaev/yarr/src/assets"
|
||||
"github.com/nkanaev/yarr/src/auth"
|
||||
"github.com/nkanaev/yarr/src/opml"
|
||||
"github.com/nkanaev/yarr/src/router"
|
||||
"github.com/nkanaev/yarr/src/storage"
|
||||
"github.com/nkanaev/yarr/src/worker"
|
||||
)
|
||||
|
||||
func (s *Server) handler() http.Handler {
|
||||
@@ -331,14 +332,13 @@ func (s *Server) handleOPMLImport(c *router.Context) {
|
||||
c.Out.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
for _, f := range doc.Feeds {
|
||||
s.db.CreateFeed(f.Title, "", f.SiteUrl, f.FeedUrl, nil)
|
||||
}
|
||||
for _, f := range doc.Folders {
|
||||
folder := s.db.CreateFolder(f.Title)
|
||||
for _, ff := range f.AllFeeds() {
|
||||
s.db.CreateFeed(f.Title, "", ff.SiteUrl, ff.FeedUrl, &folder.Id)
|
||||
s.db.CreateFeed(ff.Title, "", ff.SiteUrl, ff.FeedUrl, &folder.Id)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -354,13 +354,13 @@ func (s *Server) handleOPMLExport(c *router.Context) {
|
||||
c.Out.Header().Set("Content-Type", "application/xml; charset=utf-8")
|
||||
c.Out.Header().Set("Content-Disposition", `attachment; filename="subscriptions.opml"`)
|
||||
|
||||
doc := opml.NewFolder("")
|
||||
doc := opml.Folder{}
|
||||
|
||||
feedsByFolderID := make(map[int64][]*storage.Feed)
|
||||
for _, feed := range s.db.ListFeeds() {
|
||||
feed := feed
|
||||
if feed.FolderId == nil {
|
||||
doc.Feeds = append(doc.Feeds, &opml.Feed{
|
||||
doc.Feeds = append(doc.Feeds, opml.Feed{
|
||||
Title: feed.Title,
|
||||
FeedUrl: feed.FeedLink,
|
||||
SiteUrl: feed.Link,
|
||||
@@ -376,14 +376,15 @@ func (s *Server) handleOPMLExport(c *router.Context) {
|
||||
if len(folderFeeds) == 0 {
|
||||
continue
|
||||
}
|
||||
opmlfolder := opml.NewFolder(folder.Title)
|
||||
opmlfolder := opml.Folder{Title: folder.Title}
|
||||
for _, feed := range folderFeeds {
|
||||
opmlfolder.Feeds = append(opmlfolder.Feeds, &opml.Feed{
|
||||
opmlfolder.Feeds = append(opmlfolder.Feeds, opml.Feed{
|
||||
Title: feed.Title,
|
||||
FeedUrl: feed.FeedLink,
|
||||
SiteUrl: feed.Link,
|
||||
})
|
||||
}
|
||||
doc.Folders = append(doc.Folders, opmlfolder)
|
||||
}
|
||||
|
||||
c.Out.Write([]byte(doc.OPML()))
|
||||
|
Reference in New Issue
Block a user