diff --git a/Source/DedicatedServers/Private/UI/HTTP/HTTPRequestManager.cpp b/Source/DedicatedServers/Private/UI/HTTP/HTTPRequestManager.cpp index e4d4f29d..5c245b84 100644 --- a/Source/DedicatedServers/Private/UI/HTTP/HTTPRequestManager.cpp +++ b/Source/DedicatedServers/Private/UI/HTTP/HTTPRequestManager.cpp @@ -46,3 +46,19 @@ void UHTTPRequestManager::DumpMetadata(TSharedPtr JsonObject) DSMetaData.Dump(); } } + +FString UHTTPRequestManager::SerializeJsonContent(const TMap& Params) +{ + TSharedPtr ContentJsonObject = MakeShareable(new FJsonObject); + + for (auto Param : Params) + { + ContentJsonObject->SetStringField(Param.Key, Param.Value); + } + + FString Content; + TSharedRef> JsonWriter = TJsonWriterFactory<>::Create(&Content); + FJsonSerializer::Serialize(ContentJsonObject.ToSharedRef(), JsonWriter); + + return Content; +} diff --git a/Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp b/Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp index 3c66bd13..0b92f972 100644 --- a/Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp +++ b/Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp @@ -119,4 +119,29 @@ void UPortalManager::HandleGameSessionStatus(const FString& Status, const FStrin void UPortalManager::TryCreatePlayerSession(const FString& PlayerId, const FString& GameSessionId) { + BroadcastJoinGameSessionMessage.Broadcast(TEXT("Searching for Game Session..."), false); + + check(APIData); + + TSharedPtr Request = FHttpModule::Get().CreateRequest(); + Request->OnProcessRequestComplete().BindUObject(this, &UPortalManager::FindPlayerSession_Response); + + const FString APIUrl = APIData->GetAPIEndPoint(DedicatedServersTags::GameSessionsAPI::CreatePlayerSession); + + Request->SetURL(APIUrl); + Request->SetVerb("POST"); + Request->SetHeader("Content-Type", "application/json"); + + TMap Params = { + {TEXT("playerId"), PlayerId}, + {TEXT("sessionId"), GameSessionId} + }; + + Request->SetContentAsString(SerializeJsonContent(Params)); + Request->ProcessRequest(); +} + +void UPortalManager::FindPlayerSession_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful) +{ + } diff --git a/Source/DedicatedServers/Public/UI/HTTP/HTTPRequestManager.h b/Source/DedicatedServers/Public/UI/HTTP/HTTPRequestManager.h index 7b260533..d6f03e96 100644 --- a/Source/DedicatedServers/Public/UI/HTTP/HTTPRequestManager.h +++ b/Source/DedicatedServers/Public/UI/HTTP/HTTPRequestManager.h @@ -24,4 +24,6 @@ protected: bool ContainsErrors(TSharedPtr JsonObject, bool bLogErrors = true); void DumpMetadata(TSharedPtr JsonObject); + + FString SerializeJsonContent(const TMap& Params); }; diff --git a/Source/DedicatedServers/Public/UI/Portal/PortalManager.h b/Source/DedicatedServers/Public/UI/Portal/PortalManager.h index 9bb57c93..e6c2b99c 100644 --- a/Source/DedicatedServers/Public/UI/Portal/PortalManager.h +++ b/Source/DedicatedServers/Public/UI/Portal/PortalManager.h @@ -30,6 +30,8 @@ private: FString GetUniquePlayerId() const; void HandleGameSessionStatus(const FString& Status, const FString& SessionId); void TryCreatePlayerSession(const FString& PlayerId, const FString& GameSessionId); + void FindPlayerSession_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful); + FTimerHandle CreateSessionTimer;