From 69e1a3085cfc15e46a70a274df1e0f1871bbbeea Mon Sep 17 00:00:00 2001 From: Jaidyn Ann Date: Fri, 14 Aug 2020 12:34:09 -0500 Subject: [PATCH] New constructors; make Feeds' minDate and maxDate local --- src/AtomFeed.cpp | 16 +++++++++++----- src/AtomFeed.h | 5 ++++- src/Config.cpp | 9 +++++++++ src/Config.h | 5 +++-- src/Feed.cpp | 3 ++- src/Feed.h | 2 ++ src/Pogger.cpp | 7 +++++-- src/RssFeed.cpp | 16 +++++++++++----- src/RssFeed.h | 5 ++++- 9 files changed, 51 insertions(+), 17 deletions(-) diff --git a/src/AtomFeed.cpp b/src/AtomFeed.cpp index 92ab94e..76adea8 100644 --- a/src/AtomFeed.cpp +++ b/src/AtomFeed.cpp @@ -4,16 +4,22 @@ #include "Util.h" #include "AtomFeed.h" -AtomFeed::AtomFeed ( BString path, Config* cfg ) +AtomFeed::AtomFeed ( ) { title = BString("Untitled Feed"); description = BString(""); homeUrl = BString(""); xmlUrl = BString(""); - filePath = path; - outputDir = cfg->outDir; + filePath = BString(""); } +AtomFeed::AtomFeed ( Feed* feed ) : AtomFeed::AtomFeed() +{ filePath = feed->filePath; } +AtomFeed::AtomFeed ( Feed* feed, Config* cfg ) : AtomFeed::AtomFeed( feed ) +{ outputDir = cfg->outDir; } +AtomFeed::AtomFeed ( Config* cfg ) : AtomFeed::AtomFeed( ) +{ outputDir = cfg->outDir; } + // ---------------------------------------------------------------------------- void @@ -27,9 +33,9 @@ AtomFeed::Parse ( Config* cfg ) BDateTime attrLastDate = BDateTime(); feedFile->ReadAttr( "LastDate", B_TIME_TYPE, 0, &tt_lastDate, sizeof(time_t) ); - if ( tt_lastDate > 0 && cfg->minDate == NULL && cfg->updateFeeds == true ) { + if ( tt_lastDate > 0 && cfg->updateFeeds == true ) { attrLastDate.SetTime_t( tt_lastDate ); - cfg->minDate = attrLastDate; + minDate = attrLastDate; } tinyxml2::XMLElement* xfeed = xml.FirstChildElement("feed"); diff --git a/src/AtomFeed.h b/src/AtomFeed.h index d147025..5bad971 100644 --- a/src/AtomFeed.h +++ b/src/AtomFeed.h @@ -11,7 +11,10 @@ class AtomFeed: public Feed { public: - AtomFeed ( BString, Config* ); + AtomFeed ( ); + AtomFeed ( Feed*, Config* ); + AtomFeed ( Feed* ); + AtomFeed ( Config* ); void Parse ( Config* ); void RootParse ( Config*, tinyxml2::XMLElement* ); diff --git a/src/Config.cpp b/src/Config.cpp index e16da1d..f2739ba 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -9,6 +9,15 @@ Config::Config () { updateFeeds = false; } +Config::Config ( Config* cfg ) { + verbose = cfg->verbose; + daemon = cfg->daemon; + will_save = cfg->will_save; + updateFeeds = cfg->updateFeeds; + minDate = cfg->minDate; + maxDate = cfg->maxDate; +} + // !! handle file status void Config::Load () diff --git a/src/Config.h b/src/Config.h index 0a66ba2..d9a8646 100644 --- a/src/Config.h +++ b/src/Config.h @@ -7,6 +7,9 @@ class Config { public: + Config ( ); + Config ( Config* ); + bool verbose; bool daemon; BString outDir; @@ -21,8 +24,6 @@ public: bool updateFeeds; - Config ( ); - void Load ( ); void Save ( ); }; diff --git a/src/Feed.cpp b/src/Feed.cpp index 84f7a36..9946ad7 100644 --- a/src/Feed.cpp +++ b/src/Feed.cpp @@ -113,7 +113,8 @@ Feed::xmlCountSiblings ( tinyxml2::XMLElement* xsibling, const char* sibling_nam bool Feed::AddEntry ( Config* cfg, Entry* newEntry ) { - if ( !withinDateRange( cfg->minDate, newEntry->date, cfg->maxDate ) ) + if ( !withinDateRange( cfg->minDate, newEntry->date, cfg->maxDate ) || + !withinDateRange( minDate, newEntry->date, maxDate ) ) return false; if ( cfg->verbose == true ) diff --git a/src/Feed.h b/src/Feed.h index c61d052..b310a2e 100644 --- a/src/Feed.h +++ b/src/Feed.h @@ -18,6 +18,8 @@ public: BString description; BDateTime date; BDateTime lastDate; + BDateTime minDate; + BDateTime maxDate; BString homeUrl; BString xmlUrl; BString filePath; diff --git a/src/Pogger.cpp b/src/Pogger.cpp index 3165a7e..39d1564 100644 --- a/src/Pogger.cpp +++ b/src/Pogger.cpp @@ -149,15 +149,18 @@ processFeed ( void* feedArg ) Feed* testFeed = new Feed( *(feedStr), main_cfg ); BList entries; + if ( testFeed->updated == false && main_cfg->updateFeeds == true ) + return false; + if ( testFeed->IsAtom() ) { AtomFeed* feed = (AtomFeed*)malloc( sizeof(AtomFeed) ); - feed = new AtomFeed( testFeed->filePath, main_cfg ); + feed = new AtomFeed( testFeed, main_cfg ); feed->Parse(main_cfg); entries = feed->entries; } if ( testFeed->IsRss() ) { RssFeed* feed = (RssFeed*)malloc( sizeof(RssFeed) ); - feed = new RssFeed( testFeed->filePath, main_cfg ); + feed = new RssFeed( testFeed, main_cfg ); feed->Parse(main_cfg); entries = feed->entries; } diff --git a/src/RssFeed.cpp b/src/RssFeed.cpp index 3181bd3..f97168e 100644 --- a/src/RssFeed.cpp +++ b/src/RssFeed.cpp @@ -4,16 +4,22 @@ #include "Util.h" #include "RssFeed.h" -RssFeed::RssFeed ( BString path, Config* cfg ) +RssFeed::RssFeed ( ) { title = BString("Untitled Feed"); description = BString(""); homeUrl = BString(""); xmlUrl = BString(""); - filePath = path; - outputDir = cfg->outDir; } +RssFeed::RssFeed ( Feed* feed ) : RssFeed::RssFeed() +{ filePath = feed->filePath; } +RssFeed::RssFeed ( Feed* feed, Config* cfg ) : RssFeed::RssFeed( feed ) +{ outputDir = cfg->outDir; } +RssFeed::RssFeed ( Config* cfg ) : RssFeed::RssFeed( ) +{ outputDir = cfg->outDir; } + + // ---------------------------------------------------------------------------- void @@ -27,9 +33,9 @@ RssFeed::Parse ( Config* cfg ) feedFile->ReadAttr( "LastDate", B_TIME_TYPE, 0, &tt_lastDate, sizeof(time_t) ); - if ( tt_lastDate > 0 && cfg->minDate == NULL && cfg->updateFeeds == true ) { + if ( tt_lastDate > 0 && cfg->updateFeeds == true ) { attrLastDate.SetTime_t( tt_lastDate ); - cfg->minDate = attrLastDate; + minDate = attrLastDate; } xml.LoadFile( filePath.String() ); diff --git a/src/RssFeed.h b/src/RssFeed.h index c343086..488516c 100644 --- a/src/RssFeed.h +++ b/src/RssFeed.h @@ -11,7 +11,10 @@ class RssFeed: public Feed { public: - RssFeed ( BString, Config* ); + RssFeed ( ); + RssFeed ( Feed*, Config* ); + RssFeed ( Feed* ); + RssFeed ( Config* ); void Parse ( Config* ); void RootParse ( Config*, tinyxml2::XMLElement* );