Lesson 65 - ListFleets Callback

This commit is contained in:
Norman Lansing
2026-03-30 17:30:24 -04:00
parent 734f859059
commit 41d61d883a
6 changed files with 90 additions and 33 deletions

View File

@@ -5,13 +5,12 @@
#include "HttpModule.h"
#include "JsonObjectConverter.h"
#include "Data/API/APIData.h"
#include "DedicatedServers/DedicatedServers.h"
#include "GameplayTags/DedicatedServerTags.h"
#include "Interfaces/IHttpResponse.h"
#include "UI/HTTP/HTTPRequestTypes.h"
void UAPITestManager::ListFleetsButtonClicked()
void UAPITestManager::ListFleets()
{
check(APIData);
@@ -24,50 +23,26 @@ void UAPITestManager::ListFleetsButtonClicked()
Request->SetVerb("GET");
Request->SetHeader("Content-Type", "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)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "List Fleets Response Received");
TSharedPtr<FJsonObject> JsonObject;
TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(Response->GetContentAsString());
if (FJsonSerializer::Deserialize(JsonReader, JsonObject))
{
if (JsonObject->HasField(TEXT("errorType")) || JsonObject->HasField(TEXT("errorMessage")))
if (ContainsErrors(JsonObject))
{
FString ErrorType = JsonObject->HasField(TEXT("errorType")) ? JsonObject->GetStringField(TEXT("errorType")) : FString("Unknown Error");
FString ErrorMessage = JsonObject->HasField(TEXT("errorMessage")) ? JsonObject->GetStringField(TEXT("errorMessage")) : FString("Unknown Error Message");
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
UE_LOGFMT(LogDedicatedServers, Error, "Error Message: {ErrorMessage}", ErrorMessage);
OnListFleetsResponseReceived.Broadcast(FDSListFleetsResponse(), false);
return;
}
if (JsonObject->HasField(TEXT("$fault")))
{
FString ErrorType = JsonObject->HasField(TEXT("name")) ? JsonObject->GetStringField(TEXT("name")) : FString("Unknown Error");
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
return;
}
if (JsonObject->HasField(TEXT("$metadata")))
{
TSharedPtr<FJsonObject> MetaDataJsonObject = JsonObject->GetObjectField(TEXT("$metadata"));
FDSMetaData DSMetaData;
FJsonObjectConverter::JsonObjectToUStruct(MetaDataJsonObject.ToSharedRef(), &DSMetaData);
DSMetaData.Dump();
}
DumpMetadata(JsonObject);
FDSListFleetsResponse ListFleetsResponse;
FJsonObjectConverter::JsonObjectToUStruct(JsonObject.ToSharedRef(), &ListFleetsResponse);
OnListFleetsResponseReceived.Broadcast(ListFleetsResponse, true);
ListFleetsResponse.Dump();
}
}