Lesson 62 - Parsing the Metadata

This commit is contained in:
Norman Lansing
2026-03-30 06:57:00 -04:00
parent 34ef566665
commit d3c28f8330
6 changed files with 51 additions and 7 deletions

4
.gitignore vendored
View File

@@ -70,3 +70,7 @@ Plugins/**/Intermediate/*
# Cache files for the editor to use # Cache files for the editor to use
DerivedDataCache/* DerivedDataCache/*
# IDE Settings
.idea/
*.iml

View File

@@ -4,3 +4,5 @@
#include "Modules/ModuleManager.h" #include "Modules/ModuleManager.h"
IMPLEMENT_MODULE( FDefaultModuleImpl, DedicatedServers ); IMPLEMENT_MODULE( FDefaultModuleImpl, DedicatedServers );
DEFINE_LOG_CATEGORY( LogDedicatedServers );

View File

@@ -3,3 +3,5 @@
#pragma once #pragma once
#include "CoreMinimal.h" #include "CoreMinimal.h"
DECLARE_LOG_CATEGORY_EXTERN(LogDedicatedServers, Log, All);

View File

@@ -3,9 +3,11 @@
#include "UI/APITest/APITestManager.h" #include "UI/APITest/APITestManager.h"
#include "HttpModule.h" #include "HttpModule.h"
#include "JsonObjectConverter.h"
#include "Data/API/APIData.h" #include "Data/API/APIData.h"
#include "GameplayTags/DedicatedServerTags.h" #include "GameplayTags/DedicatedServerTags.h"
#include "Interfaces/IHttpResponse.h" #include "Interfaces/IHttpResponse.h"
#include "UI/HTTP/HTTPRequestTypes.h"
void UAPITestManager::ListFleetsButtonClicked() void UAPITestManager::ListFleetsButtonClicked()
@@ -34,13 +36,13 @@ void UAPITestManager::ListFleets_Response(FHttpRequestPtr Request, FHttpResponse
if (FJsonSerializer::Deserialize(JsonReader, JsonObject)) if (FJsonSerializer::Deserialize(JsonReader, JsonObject))
{ {
if (JsonObject->HasField(TEXT("FleetIds"))) if (JsonObject->HasField(TEXT("$metadata")))
{ {
for (TSharedPtr<FJsonValue> Fleet : JsonObject->GetArrayField(TEXT("FleetIds"))) TSharedPtr<FJsonObject> MetaDataJsonObject = JsonObject->GetObjectField(TEXT("$metadata"));
{ FDSMetaData DSMetaData;
FString FleetString = Fleet->AsString(); FJsonObjectConverter::JsonObjectToUStruct(MetaDataJsonObject.ToSharedRef(), &DSMetaData);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FleetString);
} DSMetaData.Dump();
} }
} }

View File

@@ -0,0 +1,11 @@
#include "UI/HTTP/HTTPRequestTypes.h"
#include "DedicatedServers/DedicatedServers.h"
void FDSMetaData::Dump() const
{
UE_LOGFMT(LogDedicatedServers, Log, "MetaData:");
UE_LOGFMT(LogDedicatedServers, Log, "httpStatusCode: {httpStatusCode}", httpStatusCode);
UE_LOGFMT(LogDedicatedServers, Log, "requestId: {requestId}", requestId);
UE_LOGFMT(LogDedicatedServers, Log, "attempts: {attempts}", attempts);
UE_LOGFMT(LogDedicatedServers, Log, "totalRetryDelay: {totalRetryDelay}", totalRetryDelay);
}

View File

@@ -0,0 +1,23 @@
#pragma once
#include "HTTPRequestTypes.generated.h"
USTRUCT()
struct FDSMetaData
{
GENERATED_BODY()
UPROPERTY()
int32 httpStatusCode{};
UPROPERTY()
FString requestId{};
UPROPERTY()
int32 attempts{};
UPROPERTY()
double totalRetryDelay{};
void Dump() const;
};