Status deserializeQueryDataJSON(const std::string& json, QueryDataSet& qd) { rj::Document doc; if (doc.Parse(json.c_str()).HasParseError()) { return Status(1, "Error serializing JSON"); } return deserializeQueryData(doc, qd); }
Status deserializeDiffResults(const pt::ptree& tree, DiffResults& dr) { if (tree.count("added") > 0) { auto status = deserializeQueryData(tree.get_child("added"), dr.added); if (!status.ok()) { return status; } } if (tree.count("removed") > 0) { auto status = deserializeQueryData(tree.get_child("removed"), dr.removed); if (!status.ok()) { return status; } } return Status(0, "OK"); }
Status deserializeQueryDataJSON(const std::string& json, QueryData& qd) { auto doc = JSON::newArray(); if (!doc.fromString(json) || !doc.doc().IsArray()) { return Status(1, "Cannot deserializing JSON"); } return deserializeQueryData(doc.doc(), qd); }
Status deserializeQueryDataJSON(const std::string& json, QueryData& qd) { pt::ptree tree; try { std::stringstream input; input << json; pt::read_json(input, tree); } catch (const pt::json_parser::json_parser_error& e) { return Status(1, e.what()); } return deserializeQueryData(tree, qd); }
Status deserializeDiffResults(const rj::Value& doc, DiffResults& dr) { if (!doc.IsObject()) { return Status(1); } if (doc.HasMember("removed")) { auto status = deserializeQueryData(doc["removed"], dr.removed); if (!status.ok()) { return status; } } if (doc.HasMember("added")) { auto status = deserializeQueryData(doc["added"], dr.added); if (!status.ok()) { return status; } } return Status(); }
Status deserializeQueryLogItem(const pt::ptree& tree, QueryLogItem& item) { if (tree.count("diffResults") > 0) { auto status = deserializeDiffResults(tree.get_child("diffResults"), item.results); if (!status.ok()) { return status; } } else if (tree.count("snapshot") > 0) { auto status = deserializeQueryData(tree.get_child("snapshot"), item.snapshot_results); if (!status.ok()) { return status; } } getLegacyFieldsAndDecorations(tree, item); return Status(0, "OK"); }
Status deserializeDistributedQueryResult(const pt::ptree& tree, DistributedQueryResult& r) { DistributedQueryRequest request; auto s = deserializeDistributedQueryRequest(tree.get_child("request"), request); if (!s.ok()) { return s; } QueryData results; s = deserializeQueryData(tree.get_child("results"), results); if (!s.ok()) { return s; } r.request = request; r.results = results; return Status(0, "OK"); }
Status deserializeQueryLogItem(const pt::ptree& tree, QueryLogItem& item) { if (tree.count("diffResults") > 0) { auto status = deserializeDiffResults(tree.get_child("diffResults"), item.results); if (!status.ok()) { return status; } } else if (tree.count("snapshot") > 0) { auto status = deserializeQueryData(tree.get_child("snapshot"), item.snapshot_results); if (!status.ok()) { return status; } } item.name = tree.get<std::string>("name", ""); item.identifier = tree.get<std::string>("hostIdentifier", ""); item.calendar_time = tree.get<std::string>("calendarTime", ""); item.time = tree.get<int>("unixTime", 0); return Status(0, "OK"); }
Status deserializeQueryLogItem(const JSON& doc, QueryLogItem& item) { if (!doc.doc().IsObject()) { return Status(1); } if (doc.doc().HasMember("diffResults")) { auto status = deserializeDiffResults(doc.doc()["diffResults"], item.results); if (!status.ok()) { return status; } } else if (doc.doc().HasMember("snapshot")) { auto status = deserializeQueryData(doc.doc()["snapshot"], item.snapshot_results); if (!status.ok()) { return status; } } getLegacyFieldsAndDecorations(doc, item); return Status(); }