Lesson 65 - ListFleets Callback

This commit is contained in:
Norman Lansing
2026-03-16 22:30:26 -04:00
parent 6f3e1d1f86
commit e95360489b
6 changed files with 86 additions and 32 deletions

View File

@@ -10,22 +10,16 @@
#include "Interfaces/IHttpResponse.h"
#include "UI/HTTP/HTTPRequestTypes.h"
void UAPITestManager::ListFleetsButtonClicked()
void UAPITestManager::ListFleets()
{
check(APIData);
TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
Request->OnProcessRequestComplete().BindUObject(this, &UAPITestManager::ListFleets_Response);
const FString APIUrl = APIData->GetAPIEndpoint(DedicatedServersTags::GameSessionsAPI::ListFleets);
Request->SetURL(APIUrl);
Request->SetVerb(TEXT("GET"));
Request->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
Request->ProcessRequest();
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "List Fleets Request Made");
}
void UAPITestManager::ListFleets_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
@@ -39,33 +33,16 @@ void UAPITestManager::ListFleets_Response(FHttpRequestPtr Request, FHttpResponse
{
const TSharedPtr<FJsonObject>* ErrorObjPtr = nullptr;;
if (JsonObject->HasField(TEXT("errorType")) || JsonObject->HasField(TEXT("errorMessage")))
if (ContainsErrors(JsonObject, false))
{
FString ErrorType = JsonObject->HasField(TEXT("errorType")) ? JsonObject->GetStringField(TEXT("errorType")) : TEXT("Unknown Error");
FString ErrorMessage = JsonObject->HasField(TEXT("errorMessage")) ? JsonObject->GetStringField(TEXT("errorMessage")) : TEXT("Unknown Error Message");
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
UE_LOGFMT(LogDedicatedServers, Error, "Error Message: {ErrorMessage}", ErrorMessage);
OnListFleetsResponseReceived.Broadcast(FDS_ListFleetsResponse(), false);
return;
}
if (JsonObject->HasField(TEXT("$fault")))
{
FString ErrorType = JsonObject->HasField(TEXT("name")) ? JsonObject->GetStringField(TEXT("name")) : TEXT("Unknown Error");
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
return;
}
if (JsonObject->HasField(TEXT("$metadata")))
{
TSharedPtr<FJsonObject> MetaDataJsonObject = JsonObject->GetObjectField(TEXT("$metadata"));
FDS_MetaData DSMetaData;
FJsonObjectConverter::JsonObjectToUStruct(MetaDataJsonObject.ToSharedRef(), &DSMetaData);
DSMetaData.Dump();
}
DumpMetaData(JsonObject);
FDS_ListFleetsResponse ListFleetsResponse;
FJsonObjectConverter::JsonObjectToUStruct(JsonObject.ToSharedRef(), &ListFleetsResponse);
ListFleetsResponse.Dump();
OnListFleetsResponseReceived.Broadcast(ListFleetsResponse, true);
}
}

View File

@@ -17,5 +17,27 @@ void UAPITestOverlay::NativeConstruct()
check (ListFleetsBox)
check (ListFleetsBox->Button_ListFleets)
ListFleetsBox->Button_ListFleets->OnClicked.AddDynamic(APITestManager, &UAPITestManager::ListFleetsButtonClicked);
ListFleetsBox->Button_ListFleets->OnClicked.AddDynamic(this, &UAPITestOverlay::ListFleetsButtonClicked);
}
void UAPITestOverlay::ListFleetsButtonClicked()
{
check(APITestManager);
APITestManager->OnListFleetsResponseReceived.AddDynamic(this, &UAPITestOverlay::OnListFleetsResponseReceived);
APITestManager->ListFleets();
ListFleetsBox->Button_ListFleets->SetIsEnabled(false);
}
void UAPITestOverlay::OnListFleetsResponseReceived(const FDS_ListFleetsResponse& ListFleetResponse, bool bWasSuccessful)
{
if (bWasSuccessful)
{
}
else
{
}
ListFleetsBox->Button_ListFleets->SetIsEnabled(true);
}

View File

@@ -2,3 +2,44 @@
#include "UI/HTTP/HTTPRequestManager.h"
#include "HTTPRequestTypes.h"
#include "JsonObjectConverter.h"
#include "DedicatedServers/DedicatedServers.h"
bool UHTTPRequestManager::ContainsErrors(TSharedPtr<FJsonObject> JsonObject, bool bSuppressLog)
{
if (JsonObject->HasField(TEXT("errorType")) || JsonObject->HasField(TEXT("errorMessage")))
{
if (!bSuppressLog)
{
FString ErrorType = JsonObject->HasField(TEXT("errorType")) ? JsonObject->GetStringField(TEXT("errorType")) : TEXT("Unknown Error");
FString ErrorMessage = JsonObject->HasField(TEXT("errorMessage")) ? JsonObject->GetStringField(TEXT("errorMessage")) : TEXT("Unknown Error Message");
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
UE_LOGFMT(LogDedicatedServers, Error, "Error Message: {ErrorMessage}", ErrorMessage);
}
return true;
}
if (JsonObject->HasField(TEXT("$fault")))
{
if (!bSuppressLog)
{
FString ErrorType = JsonObject->HasField(TEXT("name")) ? JsonObject->GetStringField(TEXT("name")) : TEXT("Unknown Error");
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
}
return true;
}
return false;
}
void UHTTPRequestManager::DumpMetaData(TSharedPtr<FJsonObject> JsonObject)
{
if (JsonObject->HasField(TEXT("$metadata")))
{
TSharedPtr<FJsonObject> MetaDataJsonObject = JsonObject->GetObjectField(TEXT("$metadata"));
FDS_MetaData DSMetaData;
FJsonObjectConverter::JsonObjectToUStruct(MetaDataJsonObject.ToSharedRef(), &DSMetaData);
DSMetaData.Dump();
}
}