コード例 #1
0
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);
}
コード例 #2
0
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);
}
コード例 #3
0
ファイル: WebAppInterface.cpp プロジェクト: pipe0xffff/haiku
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;
}