status_t WebAppInterface::RetrieveBulkPackageInfo(const StringList& packageNames, BMessage& message) { BString jsonString = JsonBuilder() .AddValue("jsonrpc", "2.0") .AddValue("id", ++fRequestIndex) .AddValue("method", "getBulkPkg") .AddArray("params") .AddObject() .AddArray("pkgNames") .AddStrings(packageNames) .EndArray() .AddValue("architectureCode", "x86_gcc2") .AddValue("naturalLanguageCode", fLanguage) .AddValue("versionType", "LATEST") .AddArray("filter") .AddItem("PKGCATEGORIES") .AddItem("PKGSCREENSHOTS") .AddItem("PKGICONS") .AddItem("PKGVERSIONLOCALIZATIONDESCRIPTIONS") .EndArray() .EndObject() .EndArray() .End(); // printf("Sending JSON:\n%s\n", jsonString.String()); return _SendJsonRequest(jsonString, message); }
status_t WebAppInterface::RetrievePackageInfo(const BString& packageName, const BString& architecture, BMessage& message) { BString jsonString = JsonBuilder() .AddValue("jsonrpc", "2.0") .AddValue("id", ++fRequestIndex) .AddValue("method", "getPkg") .AddArray("params") .AddObject() .AddValue("name", packageName) .AddValue("architectureCode", architecture) .AddValue("naturalLanguageCode", fLanguage) .AddValue("versionType", "NONE") .EndObject() .EndArray() .End(); // printf("Sending JSON:\n%s\n", jsonString.String()); return _SendJsonRequest(jsonString, message); }
status_t WebAppInterface::RetrievePackageInfo(const BString& packageName, BMessage& message) { BUrl url("https://depot.haiku-os.org/api/v1/pkg"); ProtocolListener listener; BUrlContext context; BHttpHeaders headers; // Content-Type headers.AddHeader("Content-Type", "application/json"); BHttpRequest request(url, true, "HTTP", &listener, &context); // Authentication if (!fUsername.IsEmpty() && !fPassword.IsEmpty()) { request.SetUserName(fUsername); request.SetPassword(fPassword); } request.SetMethod(B_HTTP_POST); request.SetHeaders(headers); BString jsonString = JsonBuilder() .AddValue("jsonrpc", "2.0") .AddValue("id", ++fRequestIndex) .AddValue("method", "getPkg") .AddArray("params") .AddObject() .AddValue("name", packageName) .AddValue("architectureCode", "x86_gcc2") .AddValue("naturalLanguageCode", "en") .AddValue("versionType", "NONE") .EndObject() .EndArray() .End(); printf("Sending JSON:\n%s\n", jsonString.String()); BMemoryIO* data = new BMemoryIO( jsonString.String(), jsonString.Length() - 1); request.AdoptInputData(data, jsonString.Length() - 1); BMallocIO replyData; listener.SetDownloadIO(&replyData); // listener.SetDebug(true); thread_id thread = request.Run(); wait_for_thread(thread, NULL); const BHttpResult& result = dynamic_cast<const BHttpResult&>( request.Result()); int32 statusCode = result.StatusCode(); if (statusCode == 200) return B_OK; printf("Response code: %" B_PRId32 "\n", statusCode); return B_ERROR; }