Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jangernert/FeedReader.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrendan Long <self@brendanlong.com>2019-02-10 03:04:17 +0300
committerBrendan Long <self@brendanlong.com>2019-02-10 20:21:41 +0300
commit4da89fea26753d70df59c1541a06b2ed921628ac (patch)
tree73127c09c5e9ad203e798acb965bf2101c1d8dd8
parent70b43b7eb3d99ca72b60a0560e9e163b0ee5c91a (diff)
Make OPMLparser only concerned with parsing feeds
Previously it also called addFeeds(), but I moved that into the function that calls it.
-rw-r--r--src/Backend/FeedServerInterface.vala3
-rw-r--r--src/Backend/OPMLparser.vala21
2 files changed, 13 insertions, 11 deletions
diff --git a/src/Backend/FeedServerInterface.vala b/src/Backend/FeedServerInterface.vala
index ed605872..f9acbb08 100644
--- a/src/Backend/FeedServerInterface.vala
+++ b/src/Backend/FeedServerInterface.vala
@@ -118,7 +118,8 @@ public abstract void removeCatFromFeed(string feedID, string catID);
public virtual void importOPML(string opml)
{
var parser = new OPMLparser(opml);
- parser.parse();
+ var feeds = parser.parse();
+ addFeeds(feeds);
}
public abstract bool getFeedsAndCats(Gee.List<Feed> feeds, Gee.List<Category> categories, Gee.List<Tag> tags, GLib.Cancellable? cancellable = null);
diff --git a/src/Backend/OPMLparser.vala b/src/Backend/OPMLparser.vala
index 5d81fd75..6781ca51 100644
--- a/src/Backend/OPMLparser.vala
+++ b/src/Backend/OPMLparser.vala
@@ -17,27 +17,31 @@ public class FeedReader.OPMLparser : GLib.Object {
private string m_opmlString;
private uint m_level = 0;
-private Gee.List<Feed> m_feeds;
+private Gee.List<Feed> m_feeds = new Gee.ArrayList<Feed>();
public OPMLparser(string opml)
{
m_opmlString = opml;
- m_feeds = new Gee.LinkedList<Feed>();
}
-public bool parse()
+public Gee.List<Feed> parse()
{
+ if(!m_feeds.is_empty)
+ {
+ Logger.error("OPMLParser is not meant to be re-used!");
+ m_feeds = new Gee.ArrayList<Feed>();
+ }
+
Xml.Doc* doc = Xml.Parser.read_doc(m_opmlString, null, null, 0);
if(doc == null)
{
Logger.error("OPML: parsing xml failed");
- return false;
+ return m_feeds;
}
-
Xml.Node* root = doc->get_root_element();
if(root->name != "opml")
- return false;
+ return m_feeds;
Logger.debug("OPML version: " + root->get_prop("version"));
@@ -58,10 +62,7 @@ public bool parse()
}
}
- Logger.debug("Subscribe to feeds");
- FeedServer.get_default().addFeeds(m_feeds);
-
- return true;
+ return m_feeds;
}
private void parseHead(Xml.Node* root)