}
std::string Serialize() const {
+ Json::StreamWriterBuilder builder;
+ return Json::writeString(builder, this->ToJson());
+ }
+
+ Json::Value ToJson() const {
Json::Value root;
root["operation"] = this->operation();
root["uri"] = this->uri();
root["mime"] = this->mime();
root["appid"] = this->appid();
root["pkgid"] = this->pkgid();
- Json::StreamWriterBuilder builder;
- return Json::writeString(builder, root);
+ return std::move(root);
}
bool IsValid() const { return valid_; }
cap.pkgid().c_str(),
cap.appid().c_str());
}
- *params = g_variant_new("a(sss)", builder);
+ *params = g_variant_new("a(sssss)", builder);
g_variant_builder_unref(builder);
}
Json::Value caps;
LOG(INFO) << "Pack " << list_.size() << " capabilities";
for (const auto& cap : list_)
- caps.append(cap.Serialize());
+ caps.append(cap.ToJson());
root["capabilities"] = caps;
Json::StreamWriterBuilder builder;
return Json::writeString(builder, root);
std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
Json::Value root;
std::string err;
-
if (!reader->parse(caps_str.c_str(), caps_str.c_str() + caps_str.size(),
&root, &err)) {
LOG(ERROR) << "Failed to parse JSON string of capabilities: " << err;
std::vector<Capability> list;
const Json::Value caps = root["capabilities"];
for (unsigned int i = 0; i < caps.size(); ++i) {
- Capability cap(caps[i].asString());
- if (!cap.IsValid()) {
- LOG(ERROR) << "Invalid capability! Ignore it";
- continue;
- }
- list.emplace_back(caps[i].asString());
+ list.emplace_back(caps[i]["operation"].asString(), caps[i]["uri"].asString(),
+ caps[i]["mime"].asString(), caps[i]["appid"].asString(),
+ caps[i]["pkgid"].asString());
}
LOG(INFO) << "Unpacked " << list.size() << " capabilities";