diff options
author | Brendan Long <self@brendanlong.com> | 2019-02-10 03:04:17 +0300 |
---|---|---|
committer | Brendan Long <self@brendanlong.com> | 2019-02-10 20:21:41 +0300 |
commit | 4da89fea26753d70df59c1541a06b2ed921628ac (patch) | |
tree | 73127c09c5e9ad203e798acb965bf2101c1d8dd8 | |
parent | 70b43b7eb3d99ca72b60a0560e9e163b0ee5c91a (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.vala | 3 | ||||
-rw-r--r-- | src/Backend/OPMLparser.vala | 21 |
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) |