aboutsummaryrefslogtreecommitdiff
path: root/src/rssparser.cpp
diff options
context:
space:
mode:
authorGravatar Galen Abell <galen@galenabell.com> 2020-08-06 16:54:34 +0200
committerGravatar Galen Abell <galen@galenabell.com> 2020-08-08 18:21:59 +0200
commite88b51ecc10b0e85db13afc43f0a6fd78753d546 (patch)
tree19a5495b9b4e88d56efe50715cbb4c33227eed8d /src/rssparser.cpp
parent5910794bca5b24bc224e2a4323c208f89e641db6 (diff)
downloadnewsboat-e88b51ecc10b0e85db13afc43f0a6fd78753d546.tar.gz
newsboat-e88b51ecc10b0e85db13afc43f0a6fd78753d546.tar.zst
newsboat-e88b51ecc10b0e85db13afc43f0a6fd78753d546.zip
Integrate Miniflux into existing implementation
Diffstat (limited to 'src/rssparser.cpp')
-rw-r--r--src/rssparser.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/rssparser.cpp b/src/rssparser.cpp
index 545e6dca..b4097f7b 100644
--- a/src/rssparser.cpp
+++ b/src/rssparser.cpp
@@ -13,6 +13,7 @@
#include "curlhandle.h"
#include "htmlrenderer.h"
#include "logger.h"
+#include "minifluxapi.h"
#include "newsblurapi.h"
#include "ocnewsapi.h"
#include "rss/exception.h"
@@ -41,6 +42,7 @@ RssParser::RssParser(const std::string& uri,
is_ttrss = cfgcont->get_configvalue("urls-source") == "ttrss";
is_newsblur = cfgcont->get_configvalue("urls-source") == "newsblur";
is_ocnews = cfgcont->get_configvalue("urls-source") == "ocnews";
+ is_miniflux = cfgcont->get_configvalue("urls-source") == "miniflux";
}
RssParser::~RssParser() {}
@@ -160,6 +162,8 @@ void RssParser::retrieve_uri(const std::string& uri)
fetch_newsblur(uri);
} else if (is_ocnews) {
fetch_ocnews(uri);
+ } else if (is_miniflux) {
+ fetch_miniflux(uri);
} else if (utils::is_http_url(uri)) {
download_http(uri);
} else if (utils::is_exec_url(uri)) {
@@ -361,7 +365,8 @@ void RssParser::fill_feed_items(std::shared_ptr<RssFeed> feed)
if ((f.rss_version == rsspp::Feed::ATOM_1_0 ||
f.rss_version == rsspp::Feed::TTRSS_JSON ||
f.rss_version == rsspp::Feed::NEWSBLUR_JSON ||
- f.rss_version == rsspp::Feed::OCNEWS_JSON) &&
+ f.rss_version == rsspp::Feed::OCNEWS_JSON ||
+ f.rss_version == rsspp::Feed::MINIFLUX_JSON) &&
item.labels.size() > 0) {
auto start = item.labels.begin();
auto finish = item.labels.end();
@@ -406,6 +411,15 @@ void RssParser::fill_feed_items(std::shared_ptr<RssFeed> feed)
x->set_unread_nowrite(false);
x->set_override_unread(true);
}
+ if (std::find(start, finish, "miniflux:unread") !=
+ finish) {
+ x->set_unread_nowrite(true);
+ x->set_override_unread(true);
+ }
+ if (std::find(start, finish, "miniflux:read") != finish) {
+ x->set_unread_nowrite(false);
+ x->set_override_unread(true);
+ }
}
set_item_content(x, item);
@@ -638,4 +652,15 @@ void RssParser::fetch_ocnews(const std::string& feed_id)
static_cast<uint64_t>(f.items.size()));
}
+void RssParser::fetch_miniflux(const std::string& feed_id)
+{
+ MinifluxApi* mapi = dynamic_cast<MinifluxApi*>(api);
+ if (mapi) {
+ f = mapi->fetch_feed(feed_id, easyhandle ? easyhandle->ptr() : nullptr);
+ }
+ LOG(Level::INFO,
+ "RssParser::fetch_miniflux: f.items.size = %" PRIu64,
+ static_cast<uint64_t>(f.items.size()));
+}
+
} // namespace newsboat