Compare commits
2 Commits
734f859059
...
new/API_Ga
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
102a514afa | ||
|
|
41d61d883a |
Binary file not shown.
Binary file not shown.
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,9 +3,14 @@
|
||||
|
||||
#include "UI/APITest/APITestOverlay.h"
|
||||
|
||||
#include "Blueprint/WidgetLayoutLibrary.h"
|
||||
#include "Components/Button.h"
|
||||
#include "Components/ScrollBox.h"
|
||||
#include "Components/TextBlock.h"
|
||||
#include "UI/API/ListFleets/FleetId.h"
|
||||
#include "UI/API/ListFleets/ListFleetsBox.h"
|
||||
#include "UI/APITest/APITestManager.h"
|
||||
#include "UI/HTTP/HTTPRequestTypes.h"
|
||||
|
||||
void UAPITestOverlay::NativeConstruct()
|
||||
{
|
||||
@@ -16,6 +21,39 @@ 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 FDSListFleetsResponse& ListFleetsResponse, bool bWasSuccessful)
|
||||
{
|
||||
if (APITestManager->OnListFleetsResponseReceived.IsAlreadyBound(this, &UAPITestOverlay::OnListFleetsResponseReceived))
|
||||
{
|
||||
APITestManager->OnListFleetsResponseReceived.RemoveDynamic(this, &UAPITestOverlay::OnListFleetsResponseReceived);
|
||||
}
|
||||
ListFleetsBox->ScrollBox_ListFleets->ClearChildren();
|
||||
check(FleetIdWidgetClass);
|
||||
if (bWasSuccessful)
|
||||
{
|
||||
for (const FString& FleetId : ListFleetsResponse.FleetIds)
|
||||
{
|
||||
UFleetId* FleetIdWidget = CreateWidget<UFleetId>(this, FleetIdWidgetClass);
|
||||
FleetIdWidget->TextBlock_FleetId->SetText(FText::FromString(FleetId));
|
||||
ListFleetsBox->ScrollBox_ListFleets->AddChild(FleetIdWidget);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UFleetId* FleetIdWidget = CreateWidget<UFleetId>(this, FleetIdWidgetClass);
|
||||
FleetIdWidget->TextBlock_FleetId->SetText(FText::FromString("Something went wrong!"));
|
||||
ListFleetsBox->ScrollBox_ListFleets->AddChild(FleetIdWidget);
|
||||
}
|
||||
ListFleetsBox->Button_ListFleets->SetIsEnabled(true);
|
||||
}
|
||||
|
||||
@@ -2,3 +2,47 @@
|
||||
|
||||
|
||||
#include "UI/HTTP/HTTPRequestManager.h"
|
||||
|
||||
#include "JsonObjectConverter.h"
|
||||
#include "DedicatedServers/DedicatedServers.h"
|
||||
#include "UI/HTTP/HTTPRequestTypes.h"
|
||||
|
||||
bool UHTTPRequestManager::ContainsErrors(TSharedPtr<FJsonObject> JsonObject, bool bLogErrors)
|
||||
{
|
||||
if (JsonObject->HasField(TEXT("errorType")) || JsonObject->HasField(TEXT("errorMessage")))
|
||||
{
|
||||
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");
|
||||
|
||||
if (bLogErrors)
|
||||
{
|
||||
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
|
||||
UE_LOGFMT(LogDedicatedServers, Error, "Error Message: {ErrorMessage}", ErrorMessage);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (JsonObject->HasField(TEXT("$fault")))
|
||||
{
|
||||
FString ErrorType = JsonObject->HasField(TEXT("name")) ? JsonObject->GetStringField(TEXT("name")) : FString("Unknown Error");
|
||||
|
||||
if (bLogErrors)
|
||||
{
|
||||
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"));
|
||||
FDSMetaData DSMetaData;
|
||||
FJsonObjectConverter::JsonObjectToUStruct(MetaDataJsonObject.ToSharedRef(), &DSMetaData);
|
||||
|
||||
DSMetaData.Dump();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
#include "UI/HTTP/HTTPRequestManager.h"
|
||||
#include "APITestManager.generated.h"
|
||||
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnListFleetsResponseReceived, const FDSListFleetsResponse&, ListFleetsResponse, bool, bWasSuccessful);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -18,7 +21,10 @@ class DEDICATEDSERVERS_API UAPITestManager : public UHTTPRequestManager
|
||||
public:
|
||||
|
||||
UFUNCTION()
|
||||
void ListFleetsButtonClicked();
|
||||
void ListFleets();
|
||||
|
||||
UPROPERTY()
|
||||
FOnListFleetsResponseReceived OnListFleetsResponseReceived;
|
||||
|
||||
void ListFleets_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);
|
||||
};
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
|
||||
class UListFleetsBox;
|
||||
class UAPITestManager;
|
||||
struct FDSListFleetsResponse;
|
||||
class UFleetId;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -21,6 +24,9 @@ public:
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
TSubclassOf<UAPITestManager> APITestManagerClass;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
TSubclassOf<UFleetId> FleetIdWidgetClass;
|
||||
|
||||
protected:
|
||||
|
||||
virtual void NativeConstruct() override;
|
||||
@@ -33,4 +39,10 @@ private:
|
||||
UPROPERTY()
|
||||
TObjectPtr<UAPITestManager> APITestManager;
|
||||
|
||||
UFUNCTION()
|
||||
void ListFleetsButtonClicked();
|
||||
|
||||
UFUNCTION()
|
||||
void OnListFleetsResponseReceived(const FDSListFleetsResponse& ListFleetsResponse, bool bWasSuccessful);
|
||||
|
||||
};
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "HTTPRequestManager.generated.h"
|
||||
|
||||
class UAPIData;
|
||||
class FJsonObject;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -20,4 +21,7 @@ protected:
|
||||
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
TObjectPtr<UAPIData> APIData;
|
||||
|
||||
bool ContainsErrors(TSharedPtr<FJsonObject> JsonObject, bool bLogErrors = true);
|
||||
void DumpMetadata(TSharedPtr<FJsonObject> JsonObject);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user