From d3c28f8330e57d2960c63f28727cea6c555b12c7 Mon Sep 17 00:00:00 2001 From: Norman Lansing Date: Mon, 30 Mar 2026 06:57:00 -0400 Subject: [PATCH] Lesson 62 - Parsing the Metadata --- .gitignore | 6 ++++- Source/DedicatedServers/DedicatedServers.cpp | 2 ++ Source/DedicatedServers/DedicatedServers.h | 2 ++ .../Private/UI/APITest/APITestManager.cpp | 14 ++++++----- .../Private/UI/HTTP/HTTPRequestTypes.cpp | 11 +++++++++ .../Public/UI/HTTP/HTTPRequestTypes.h | 23 +++++++++++++++++++ 6 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 Source/DedicatedServers/Private/UI/HTTP/HTTPRequestTypes.cpp create mode 100644 Source/DedicatedServers/Public/UI/HTTP/HTTPRequestTypes.h diff --git a/.gitignore b/.gitignore index e461f6ee..57a34693 100644 --- a/.gitignore +++ b/.gitignore @@ -69,4 +69,8 @@ Intermediate/* Plugins/**/Intermediate/* # Cache files for the editor to use -DerivedDataCache/* \ No newline at end of file +DerivedDataCache/* + +# IDE Settings +.idea/ +*.iml \ No newline at end of file diff --git a/Source/DedicatedServers/DedicatedServers.cpp b/Source/DedicatedServers/DedicatedServers.cpp index ae762d04..d6c59567 100644 --- a/Source/DedicatedServers/DedicatedServers.cpp +++ b/Source/DedicatedServers/DedicatedServers.cpp @@ -4,3 +4,5 @@ #include "Modules/ModuleManager.h" IMPLEMENT_MODULE( FDefaultModuleImpl, DedicatedServers ); + +DEFINE_LOG_CATEGORY( LogDedicatedServers ); \ No newline at end of file diff --git a/Source/DedicatedServers/DedicatedServers.h b/Source/DedicatedServers/DedicatedServers.h index ddbf2e22..d4648dda 100644 --- a/Source/DedicatedServers/DedicatedServers.h +++ b/Source/DedicatedServers/DedicatedServers.h @@ -3,3 +3,5 @@ #pragma once #include "CoreMinimal.h" + +DECLARE_LOG_CATEGORY_EXTERN(LogDedicatedServers, Log, All); \ No newline at end of file diff --git a/Source/DedicatedServers/Private/UI/APITest/APITestManager.cpp b/Source/DedicatedServers/Private/UI/APITest/APITestManager.cpp index 633da4cb..da27c6a1 100644 --- a/Source/DedicatedServers/Private/UI/APITest/APITestManager.cpp +++ b/Source/DedicatedServers/Private/UI/APITest/APITestManager.cpp @@ -3,9 +3,11 @@ #include "UI/APITest/APITestManager.h" #include "HttpModule.h" +#include "JsonObjectConverter.h" #include "Data/API/APIData.h" #include "GameplayTags/DedicatedServerTags.h" #include "Interfaces/IHttpResponse.h" +#include "UI/HTTP/HTTPRequestTypes.h" void UAPITestManager::ListFleetsButtonClicked() @@ -34,13 +36,13 @@ void UAPITestManager::ListFleets_Response(FHttpRequestPtr Request, FHttpResponse if (FJsonSerializer::Deserialize(JsonReader, JsonObject)) { - if (JsonObject->HasField(TEXT("FleetIds"))) + if (JsonObject->HasField(TEXT("$metadata"))) { - for (TSharedPtr Fleet : JsonObject->GetArrayField(TEXT("FleetIds"))) - { - FString FleetString = Fleet->AsString(); - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FleetString); - } + TSharedPtr MetaDataJsonObject = JsonObject->GetObjectField(TEXT("$metadata")); + FDSMetaData DSMetaData; + FJsonObjectConverter::JsonObjectToUStruct(MetaDataJsonObject.ToSharedRef(), &DSMetaData); + + DSMetaData.Dump(); } } diff --git a/Source/DedicatedServers/Private/UI/HTTP/HTTPRequestTypes.cpp b/Source/DedicatedServers/Private/UI/HTTP/HTTPRequestTypes.cpp new file mode 100644 index 00000000..81d53d4d --- /dev/null +++ b/Source/DedicatedServers/Private/UI/HTTP/HTTPRequestTypes.cpp @@ -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); +} diff --git a/Source/DedicatedServers/Public/UI/HTTP/HTTPRequestTypes.h b/Source/DedicatedServers/Public/UI/HTTP/HTTPRequestTypes.h new file mode 100644 index 00000000..bece459f --- /dev/null +++ b/Source/DedicatedServers/Public/UI/HTTP/HTTPRequestTypes.h @@ -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; +}; \ No newline at end of file