opml tweaks & fixes

This commit is contained in:
Nazar Kanaev
2021-03-19 00:00:23 +00:00
parent 62e2ca4c16
commit 391ce61362
5 changed files with 42 additions and 50 deletions

View File

@@ -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()))