Add functions to convert between list<string> and Json::Value.

This commit is contained in:
tastytea 2020-01-01 12:13:35 +01:00
parent 7267981c37
commit 71a754ed1c
Signed by: tastytea
GPG Key ID: CFC39497F1B26E07
2 changed files with 33 additions and 14 deletions

View File

@ -213,10 +213,7 @@ void Config::parse()
profiledata.access_token = _json[profile]["access_token"].asString(); profiledata.access_token = _json[profile]["access_token"].asString();
profiledata.append = _json[profile]["append"].asString(); profiledata.append = _json[profile]["append"].asString();
profiledata.feedurl = _json[profile]["feedurl"].asString(); profiledata.feedurl = _json[profile]["feedurl"].asString();
for (const auto &fix : _json[profile]["fixes"]) profiledata.fixes = jsonarray_to_stringlist(_json[profile]["fixes"]);
{
profiledata.fixes.push_back(fix.asString());
}
profiledata.instance = _json[profile]["instance"].asString(); profiledata.instance = _json[profile]["instance"].asString();
if (!_json[profile]["interval"].isNull()) if (!_json[profile]["interval"].isNull())
{ {
@ -228,10 +225,7 @@ void Config::parse()
{ {
profiledata.max_size = _json[profile]["max_size"].asUInt64(); profiledata.max_size = _json[profile]["max_size"].asUInt64();
} }
for (const auto &skip : _json[profile]["skip"]) profiledata.skip = jsonarray_to_stringlist(_json[profile]["skip"]);
{
profiledata.skip.push_back(skip.asString());
}
profiledata.titles_as_cw = _json[profile]["titles_as_cw"].asBool(); profiledata.titles_as_cw = _json[profile]["titles_as_cw"].asBool();
profiledata.titles_only = _json[profile]["titles_only"].asBool(); profiledata.titles_only = _json[profile]["titles_only"].asBool();
@ -243,13 +237,13 @@ void Config::write()
_json[profile]["access_token"] = profiledata.access_token; _json[profile]["access_token"] = profiledata.access_token;
_json[profile]["append"] = profiledata.append; _json[profile]["append"] = profiledata.append;
_json[profile]["feedurl"] = profiledata.feedurl; _json[profile]["feedurl"] = profiledata.feedurl;
// Leave fixes. _json[profile]["fixes"] = stringlist_to_jsonarray(profiledata.fixes);
_json[profile]["instance"] = profiledata.instance; _json[profile]["instance"] = profiledata.instance;
_json[profile]["interval"] = profiledata.interval; _json[profile]["interval"] = profiledata.interval;
_json[profile]["last_guid"] = profiledata.last_guid; _json[profile]["last_guid"] = profiledata.last_guid;
_json[profile]["max_size"] _json[profile]["max_size"]
= static_cast<Json::Value::UInt64>(profiledata.max_size); = static_cast<Json::Value::UInt64>(profiledata.max_size);
// Leave skip. _json[profile]["skip"] = stringlist_to_jsonarray(profiledata.skip);
_json[profile]["titles_as_cw"] = profiledata.titles_as_cw; _json[profile]["titles_as_cw"] = profiledata.titles_as_cw;
_json[profile]["titles_only"] = profiledata.titles_only; _json[profile]["titles_only"] = profiledata.titles_only;
@ -261,4 +255,27 @@ void Config::write()
BOOST_LOG_TRIVIAL(debug) << "Wrote config file."; BOOST_LOG_TRIVIAL(debug) << "Wrote config file.";
} }
list<string> Config::jsonarray_to_stringlist(const Json::Value &jsonarray) const
{
list<string> stringlist;
for (const auto &element : jsonarray)
{
stringlist.push_back(element.asString());
}
return stringlist;
}
Json::Value Config::stringlist_to_jsonarray(const list<string> &stringlist)
const
{
Json::Value jsonarray;
for (const auto &element : stringlist)
{
static Json::ArrayIndex index{0};
jsonarray.insert(index, element);
++index;
}
return jsonarray;
}
} // namespace mastorss } // namespace mastorss

View File

@ -21,17 +21,17 @@
#include <json/json.h> #include <json/json.h>
#include <cstdint> #include <cstdint>
#include <list>
#include <string> #include <string>
#include <string_view> #include <string_view>
#include <vector>
namespace mastorss namespace mastorss
{ {
namespace fs = boost::filesystem; namespace fs = boost::filesystem;
using std::uint32_t; using std::uint32_t;
using std::list;
using std::string; using std::string;
using std::string_view; using std::string_view;
using std::vector;
/*! /*!
* @brief The configuration for a profile as data structure. * @brief The configuration for a profile as data structure.
@ -43,12 +43,12 @@ struct ProfileData
string access_token; string access_token;
string append; string append;
string feedurl; string feedurl;
vector<string> fixes; list<string> fixes;
string instance; string instance;
uint32_t interval{30}; uint32_t interval{30};
string last_guid; string last_guid;
size_t max_size{500}; size_t max_size{500};
vector<string> skip; list<string> skip;
bool titles_as_cw{false}; bool titles_as_cw{false};
bool titles_only{false}; bool titles_only{false};
@ -82,6 +82,8 @@ private:
[[nodiscard]] [[nodiscard]]
string get_access_token(const string &instance) const; string get_access_token(const string &instance) const;
void parse(); void parse();
list<string> jsonarray_to_stringlist(const Json::Value &jsonarray) const;
Json::Value stringlist_to_jsonarray(const list<string> &stringlist) const;
}; };
} // namespace mastorss } // namespace mastorss