diff options
author | 2020-08-06 16:54:34 +0200 | |
---|---|---|
committer | 2020-08-08 18:21:59 +0200 | |
commit | e88b51ecc10b0e85db13afc43f0a6fd78753d546 (patch) | |
tree | 19a5495b9b4e88d56efe50715cbb4c33227eed8d /src/rssparser.cpp | |
parent | 5910794bca5b24bc224e2a4323c208f89e641db6 (diff) | |
download | newsboat-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.cpp | 27 |
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 |