BObjectList<PootleProject> PootleProjectsEndpoint::Get(int limit, int offset) { BObjectList<PootleProject> objectlist(20, true); BString url; int32 count = -1; if (limit == -1) limit = 100; url.SetToFormat("?limit=%d&offset=%d", limit, offset); BMessage data = _GetAll(url, limit < 0 ? 0 : limit); data.GetInfo("data", NULL, &count); if (count < 0) return objectlist; for (int32 i = 0; i < count; i++) { BMessage msg; data.FindMessage("data", i, &msg); PootleProject *lang = new PootleProject(this, msg); objectlist.AddItem(lang); } return objectlist; }
void _GetAll(const rapidjson::Value& doc, KvPairs& kvPairs) const { if (doc.HasMember(kDir) && (doc[kDir].GetBool() == true)) { if (!doc.HasMember(kNodes)) return; // directory doesn't have nodes const rapidjson::Value& nodes = doc[kNodes]; assert(nodes.IsArray()); for (size_t i = 0; i < nodes.Size(); ++i) _GetAll(nodes[i], kvPairs); } else { if (doc.HasMember(kKey)) { if (doc.HasMember(kValue)) { kvPairs.emplace(doc[kKey].GetString(), doc[kValue].GetString()); } else { kvPairs.emplace(doc[kKey].GetString(), ""); } } } }
void GetAll(KvPairs& kvPairs) const { if (! document_.HasMember(kNode)) { } //ToDo check whether prefix should be "/" return _GetAll(document_[kNode], kvPairs); }