workign http request

This commit is contained in:
Santiago Lema 2025-05-07 00:28:10 -03:00
parent 6fb8e69244
commit 2e82ca6791
3 changed files with 32 additions and 35 deletions

View file

@ -44,7 +44,7 @@ MainWindow::MainWindow()
BLayoutBuilder::Group<>(this, B_VERTICAL, 0).Add(menuBar).AddGlue().End();
_inputField =
new BTextControl(B_TRANSLATE("Your question: "), "What is the matrix ?", new BMessage(kQuestionChanged));
new BTextControl("", "What is the matrix ?", new BMessage(kQuestionChanged));
_progress = new BStatusBar("prog");
@ -55,7 +55,6 @@ MainWindow::MainWindow()
_answerView = new BTextView("answer");
BStringView* header = new BStringView("biglabel", "Let's Be Dumber!");
BFont font;
header->GetFont(&font);
@ -64,7 +63,7 @@ MainWindow::MainWindow()
// Info view, only one line high
_infoView = new BTextView("info");
_infoView->SetText("Ask your question..");
_infoView->SetText("...");
_infoView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
_infoView->MakeEditable(false);
_infoView->MakeSelectable(false);
@ -79,7 +78,7 @@ MainWindow::MainWindow()
_inputField->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, askH * 6));
BButton *sendButton =
new BButton("send", B_TRANSLATE("ask"), new BMessage(kSendPrompt),
new BButton("send", B_TRANSLATE("Send"), new BMessage(kSendPrompt),
B_WILL_DRAW | B_NAVIGABLE);
BLayoutBuilder::Group<>(this, B_VERTICAL, 0)
@ -171,14 +170,14 @@ void MainWindow::MessageReceived(BMessage *message) {
case UrlEvent::RequestCompleted: {
printf("RequestCompleted\n");
auto identifier = message->GetInt32(UrlEventData::Id, -1);
if (resultOne->Identity() == identifier) {
if (_lastResult->Identity() == identifier) {
// The following call will not block, because we have been notified
// that the request is done.
auto body = resultOne->Body();
//if (body)
// _DisplayHttpResult(body.value());
//else
// _DisplayError(body.error());
BHttpBody body = _lastResult->Body();
if (body.text.has_value())
_answerView->SetText(body.text.value());
else
_answerView->SetText("nuthin'");
}
_infoView->SetText("Completed");
@ -198,28 +197,30 @@ void MainWindow::MessageReceived(BMessage *message) {
case UrlEvent::BytesWritten: {
_infoView->SetText("Some bytes written..");
// auto identifier = message->GetInt32(UrlEventData::Id, -1);
// if (fResult.Identifier() == identifier) {
//off_t numBytes = message->GetInt64(UrlEventData::NumBytes, 0);
//_progress->SetTo(numBytes);
//}
auto identifier = message->GetInt32(UrlEventData::Id, -1);
if (_lastResult->Identity() == identifier) {
off_t numBytes = message->GetInt64(UrlEventData::NumBytes, 0);
off_t totalBytes = message->GetInt64(UrlEventData::TotalBytes, 0);
_progress->SetTo(numBytes);
_progress->SetMaxValue(totalBytes);
}
} break;
case UrlEvent::DownloadProgress: {
auto identifier = message->GetInt32(UrlEventData::Id, -1);
if (resultOne->Identity() == identifier) {
off_t nn = message->GetInt64(UrlEventData::NumBytes, 0);
off_t totalBytes = message->GetInt64(UrlEventData::TotalBytes, 0);
_progress->SetMaxValue(totalBytes);
_progress->SetTo(nn);
_infoView->SetText("Download Progress..");
if (_lastResult->Identity() == identifier) {
off_t nn = message->GetInt64(UrlEventData::NumBytes, 0);
off_t totalBytes = message->GetInt64(UrlEventData::TotalBytes, 0);
_progress->SetTo(nn);
_progress->SetMaxValue(totalBytes);
_infoView->SetText("Download Progress..");
}
} break;
default: {
message->PrintToStream();
//message->PrintToStream();
BWindow::MessageReceived(message); // call the parent handler for other messages
// _infoView->SetText(message->FindMessage());
break;
@ -234,24 +235,21 @@ void MainWindow::MessageReceived(BMessage *message) {
void MainWindow::sendQuery() {
//if (resultOne!=nullptr)
// _sharedSession.Cancel(resultOne->Identity());
if (_lastResult)
_sharedSession.Cancel(_lastResult->Identity());
_progress->SetMaxValue(100);
_progress->SetTo(0);
auto url = BUrl("https://www.link-u.com/ip/");
BHttpRequest request = BHttpRequest(url);
// requestOne = &request;
// request.SetTimeout()
// request.SetMethod(BHttpMethod::Get);
printf("Sending Prompt to server: %s\n", url.UrlString().String());
_lastResult = _sharedSession.Execute(std::move(request), nullptr, this);
BHttpResult res = _sharedSession.Execute(std::move(request), nullptr, this);
printf("Result has identity: %d\n", res.Identity());
resultOne = &res;
if (_lastResult) {
printf("Result has identity: %d\n", _lastResult->Identity());
}
}