URLs are now built and validated using a special function.
This commit is contained in:
parent
7b608bb201
commit
0db0d2ad1d
@ -10,18 +10,6 @@
|
||||
#include "Kismet/GameplayStatics.h"
|
||||
|
||||
|
||||
const FString GetGameVersion()
|
||||
{
|
||||
FString GameVersion;
|
||||
GConfig->GetString(TEXT("/Script/EngineSettings.GeneralProjectSettings"), TEXT("ProjectVersion"), GameVersion, GGameIni);
|
||||
if (GameVersion.IsEmpty())
|
||||
{
|
||||
GameVersion = "1.0.0.0";
|
||||
}
|
||||
return GameVersion;
|
||||
}
|
||||
|
||||
|
||||
void UServerAPI::ReturnListOfBugs()
|
||||
{
|
||||
this->BugDataResponse.Execute(TArray<FUnrealzillaBugData>());
|
||||
@ -104,6 +92,17 @@ void UServerAPI::CreateError(const FString &ErrorMessage)
|
||||
}
|
||||
|
||||
|
||||
const FString UServerAPI::GetGameVersion()
|
||||
{
|
||||
FString GameVersion;
|
||||
GConfig->GetString(TEXT("/Script/EngineSettings.GeneralProjectSettings"), TEXT("ProjectVersion"), GameVersion, GGameIni);
|
||||
if (GameVersion.IsEmpty())
|
||||
{
|
||||
GameVersion = "1.0.0.0";
|
||||
}
|
||||
return GameVersion;
|
||||
}
|
||||
|
||||
const FString UServerAPI::FormatQueryString(const TMap<FString, FString> &QueryData)
|
||||
{
|
||||
TArray<FString> AssembledKeyValuePairs;
|
||||
@ -116,3 +115,25 @@ const FString UServerAPI::FormatQueryString(const TMap<FString, FString> &QueryD
|
||||
|
||||
return FString::Join(AssembledKeyValuePairs, TEXT("&"));
|
||||
}
|
||||
|
||||
const FString UServerAPI::URLBuilder(const FString &Server, const FString &Path)
|
||||
{
|
||||
FString ServerValidated = Server;
|
||||
FString PathValidated = Path;
|
||||
|
||||
if (!Server.EndsWith("/"))
|
||||
{
|
||||
ServerValidated += "/";
|
||||
}
|
||||
|
||||
if (!Path.EndsWith("/"))
|
||||
{
|
||||
PathValidated += "/";
|
||||
}
|
||||
while (PathValidated.StartsWith("/"))
|
||||
{
|
||||
PathValidated = PathValidated.RightChop(1);
|
||||
}
|
||||
|
||||
return (ServerValidated + PathValidated);
|
||||
}
|
||||
|
||||
@ -10,10 +10,17 @@
|
||||
#include "Kismet/GameplayStatics.h"
|
||||
|
||||
|
||||
UServerBugzillaAPI::UServerBugzillaAPI()
|
||||
{
|
||||
this->FullURL = UServerAPI::URLBuilder(
|
||||
GetDefault<UUnrealzillaGlobalSettings>()->BugzillaSubmissionServer,
|
||||
GetDefault<UUnrealzillaGlobalSettings>()->BugzillaRESTURI
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
void UServerBugzillaAPI::ReturnListOfBugs()
|
||||
{
|
||||
const FString FullURL = GetDefault<UUnrealzillaGlobalSettings>()->BugzillaSubmissionServer + GetDefault<UUnrealzillaGlobalSettings>()->BugzillaRESTURI;
|
||||
|
||||
TArray<FString> StatusQueries;
|
||||
if (GetDefault<UUnrealzillaGlobalSettings>()->bShowUnresolvedBugs)
|
||||
{
|
||||
@ -44,7 +51,7 @@ void UServerBugzillaAPI::ReturnListOfBugs()
|
||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> SeverityRequest = HttpModule.CreateRequest();
|
||||
SeverityRequest->SetVerb(TEXT("GET"));
|
||||
SeverityRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
||||
SeverityRequest->SetURL(FullURL + "bug" + "?" + QueryString);
|
||||
SeverityRequest->SetURL(this->FullURL + "bug" + "?" + QueryString);
|
||||
SeverityRequest->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ListOfBugsResponse);
|
||||
SeverityRequest->ProcessRequest();
|
||||
}
|
||||
@ -88,8 +95,6 @@ void UServerBugzillaAPI::ListOfBugsResponse(FHttpRequestPtr Request, FHttpRespon
|
||||
|
||||
void UServerBugzillaAPI::PrepareForm()
|
||||
{
|
||||
const FString FullURL = GetDefault<UUnrealzillaGlobalSettings>()->BugzillaSubmissionServer + GetDefault<UUnrealzillaGlobalSettings>()->BugzillaRESTURI;
|
||||
|
||||
// Assemble query data into key:value pairs
|
||||
TMap<FString, FString> QueryData;
|
||||
QueryData.Add("api_key", GetDefault<UUnrealzillaGlobalSettings>()->BugzillaAPIKey);
|
||||
@ -100,7 +105,7 @@ void UServerBugzillaAPI::PrepareForm()
|
||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> ProductRequest = HttpModule.CreateRequest();
|
||||
ProductRequest->SetVerb(TEXT("GET"));
|
||||
ProductRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
||||
ProductRequest->SetURL(FullURL + "product/" + GetDefault<UUnrealzillaGlobalSettings>()->BugzillaProductName + "?" + QueryString);
|
||||
ProductRequest->SetURL(this->FullURL + "product/" + GetDefault<UUnrealzillaGlobalSettings>()->BugzillaProductName + "?" + QueryString);
|
||||
ProductRequest->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerProductInfoResponse);
|
||||
ProductRequest->ProcessRequest();
|
||||
|
||||
@ -108,7 +113,7 @@ void UServerBugzillaAPI::PrepareForm()
|
||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> SeverityRequest = HttpModule.CreateRequest();
|
||||
SeverityRequest->SetVerb(TEXT("GET"));
|
||||
SeverityRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
||||
SeverityRequest->SetURL(FullURL + "field/bug/bug_severity" + "?" + QueryString);
|
||||
SeverityRequest->SetURL(this->FullURL + "field/bug/bug_severity" + "?" + QueryString);
|
||||
SeverityRequest->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerSeverityInfoResponse);
|
||||
SeverityRequest->ProcessRequest();
|
||||
|
||||
@ -116,7 +121,7 @@ void UServerBugzillaAPI::PrepareForm()
|
||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> PlatformsRequest = HttpModule.CreateRequest();
|
||||
PlatformsRequest->SetVerb(TEXT("GET"));
|
||||
PlatformsRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
||||
PlatformsRequest->SetURL(FullURL + "field/bug/rep_platform" + "?" + QueryString);
|
||||
PlatformsRequest->SetURL(this->FullURL + "field/bug/rep_platform" + "?" + QueryString);
|
||||
PlatformsRequest->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerPlatformInfoResponse);
|
||||
PlatformsRequest->ProcessRequest();
|
||||
|
||||
@ -124,16 +129,13 @@ void UServerBugzillaAPI::PrepareForm()
|
||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> OSRequest = HttpModule.CreateRequest();
|
||||
OSRequest->SetVerb(TEXT("GET"));
|
||||
OSRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
||||
OSRequest->SetURL(FullURL + "field/bug/op_sys" + "?" + QueryString);
|
||||
OSRequest->SetURL(this->FullURL + "field/bug/op_sys" + "?" + QueryString);
|
||||
OSRequest->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerOSInfoResponse);
|
||||
OSRequest->ProcessRequest();
|
||||
}
|
||||
|
||||
void UServerBugzillaAPI::SendFormData(const FUnrealzillaPostData &PostData)
|
||||
{
|
||||
const FString FullURL = GetDefault<UUnrealzillaGlobalSettings>()->BugzillaSubmissionServer + GetDefault<UUnrealzillaGlobalSettings>()->BugzillaRESTURI;
|
||||
const FString RequestURL = "bug";
|
||||
|
||||
// Assemble query data into key:value pairs
|
||||
TMap<FString, FString> QueryData;
|
||||
QueryData.Add("api_key", GetDefault<UUnrealzillaGlobalSettings>()->BugzillaAPIKey);
|
||||
@ -189,7 +191,7 @@ void UServerBugzillaAPI::SendFormData(const FUnrealzillaPostData &PostData)
|
||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> Request = HttpModule.CreateRequest();
|
||||
Request->SetVerb(TEXT("POST"));
|
||||
Request->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
||||
Request->SetURL(FullURL + RequestURL + "?" + UServerAPI::FormatQueryString(QueryData));
|
||||
Request->SetURL(this->FullURL + "bug" + "?" + UServerAPI::FormatQueryString(QueryData));
|
||||
Request->SetContentAsString(PostJsonString);
|
||||
Request->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerPOSTResponse);
|
||||
Request->ProcessRequest();
|
||||
@ -212,8 +214,6 @@ void UServerBugzillaAPI::ServerPOSTResponse(FHttpRequestPtr Request, FHttpRespon
|
||||
{
|
||||
// Use the response's bug ID to get the info from the newly filed bug report and update its marker
|
||||
|
||||
const FString FullURL = GetDefault<UUnrealzillaGlobalSettings>()->BugzillaSubmissionServer + GetDefault<UUnrealzillaGlobalSettings>()->BugzillaRESTURI;
|
||||
|
||||
TArray<FString> StatusQueries;
|
||||
StatusQueries.Add("id=" + FString::FromInt(ResponseData.id));
|
||||
if (GetDefault<UUnrealzillaGlobalSettings>()->bShowUnresolvedBugs)
|
||||
@ -245,7 +245,7 @@ void UServerBugzillaAPI::ServerPOSTResponse(FHttpRequestPtr Request, FHttpRespon
|
||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> SeverityRequest = HttpModule.CreateRequest();
|
||||
SeverityRequest->SetVerb(TEXT("GET"));
|
||||
SeverityRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
||||
SeverityRequest->SetURL(FullURL + "/bug" + "?" + QueryString);
|
||||
SeverityRequest->SetURL(this->FullURL + "bug" + "?" + QueryString);
|
||||
SeverityRequest->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerPOSTUpdateMarkerResponse);
|
||||
SeverityRequest->ProcessRequest();
|
||||
}
|
||||
@ -454,9 +454,10 @@ void UServerBugzillaAPI::CheckIfAllFormResponsesAreIn()
|
||||
Data.OSList = this->OSList;
|
||||
|
||||
// Find a default version number to use if possible
|
||||
if (this->VersionsList.Contains(GetGameVersion()))
|
||||
const FString GameVersion = UServerAPI::GetGameVersion();
|
||||
if (this->VersionsList.Contains(GameVersion))
|
||||
{
|
||||
Data.DetectedVersion = GetGameVersion();
|
||||
Data.DetectedVersion = GameVersion;
|
||||
}
|
||||
else if (this->VersionsList.Contains("unspecified"))
|
||||
{
|
||||
|
||||
@ -10,6 +10,15 @@
|
||||
#include "Kismet/GameplayStatics.h"
|
||||
|
||||
|
||||
UServerJiraAPI::UServerJiraAPI()
|
||||
{
|
||||
this->FullURL = UServerAPI::URLBuilder(
|
||||
GetDefault<UUnrealzillaGlobalSettings>()->JiraSubmissionServer,
|
||||
GetDefault<UUnrealzillaGlobalSettings>()->JiraRESTURI
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
void UServerJiraAPI::ReturnListOfBugs()
|
||||
{
|
||||
const FString FullURL = GetDefault<UUnrealzillaGlobalSettings>()->JiraSubmissionServer + "/rest";
|
||||
@ -454,9 +463,10 @@ void UServerJiraAPI::CheckIfAllFormResponsesAreIn()
|
||||
Data.OSList = this->OSList;
|
||||
|
||||
// Find a default version number to use if possible
|
||||
if (this->VersionsList.Contains(GetGameVersion()))
|
||||
const FString GameVersion = UServerAPI::GetGameVersion();
|
||||
if (this->VersionsList.Contains(GameVersion))
|
||||
{
|
||||
Data.DetectedVersion = GetGameVersion();
|
||||
Data.DetectedVersion = GameVersion;
|
||||
}
|
||||
else if (this->VersionsList.Contains("unspecified"))
|
||||
{
|
||||
|
||||
@ -25,21 +25,20 @@ public:
|
||||
virtual void PrepareForm();
|
||||
virtual void SendFormData(const FUnrealzillaPostData &PostData);
|
||||
|
||||
DECLARE_DELEGATE_OneParam(FBugListResponseDelegate, const TArray<FUnrealzillaBugData>&);
|
||||
FBugListResponseDelegate BugDataResponse;
|
||||
|
||||
DECLARE_DELEGATE_OneParam(FFormResponseDelegate, const FUnrealzillaFormPrepData&);
|
||||
FFormResponseDelegate FormDataResponse;
|
||||
|
||||
DECLARE_DELEGATE_OneParam(FServerErrorResponseDelegate, const FUnrealzillaErrorData &)
|
||||
FServerErrorResponseDelegate ErrorResponse;
|
||||
|
||||
TArray<FString> GetComponentsList() const { return this->ComponentsList; }
|
||||
TArray<FString> GetSeverityList() const { return this->SeverityList; }
|
||||
TArray<FString> GetVersionsList() const { return this->VersionsList; }
|
||||
TArray<FString> GetPlatformsList() const { return this->PlatformsList; }
|
||||
TArray<FString> GetOSList() const { return this->OSList; }
|
||||
|
||||
DECLARE_DELEGATE_OneParam(FBugListResponseDelegate, const TArray<FUnrealzillaBugData>&);
|
||||
DECLARE_DELEGATE_OneParam(FFormResponseDelegate, const FUnrealzillaFormPrepData&);
|
||||
DECLARE_DELEGATE_OneParam(FServerErrorResponseDelegate, const FUnrealzillaErrorData &);
|
||||
|
||||
FBugListResponseDelegate BugDataResponse;
|
||||
FFormResponseDelegate FormDataResponse;
|
||||
FServerErrorResponseDelegate ErrorResponse;
|
||||
|
||||
protected:
|
||||
void ServerConnectionError(const EHttpRequestStatus::Type Status);
|
||||
|
||||
@ -49,11 +48,15 @@ protected:
|
||||
void CreateError(const EErrorVerb &Verb, const FBugzillaJSONBugResponse &Data);
|
||||
void CreateError(const FString &ErrorMessage);
|
||||
|
||||
static const FString URLBuilder(const FString &Server, const FString &Path);
|
||||
static const FString FormatQueryString(const TMap<FString, FString> &QueryData);
|
||||
static const FString GetGameVersion();
|
||||
|
||||
TArray<FString> ComponentsList;
|
||||
TArray<FString> SeverityList;
|
||||
TArray<FString> VersionsList;
|
||||
TArray<FString> PlatformsList;
|
||||
TArray<FString> OSList;
|
||||
|
||||
FString FullURL;
|
||||
};
|
||||
|
||||
@ -16,6 +16,8 @@ class UNREALZILLA_API UServerBugzillaAPI : public UServerAPI
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
UServerBugzillaAPI();
|
||||
|
||||
virtual void ReturnListOfBugs() override;
|
||||
virtual void PrepareForm() override;
|
||||
virtual void SendFormData(const FUnrealzillaPostData &PostData) override;
|
||||
|
||||
@ -16,6 +16,8 @@ class UNREALZILLA_API UServerJiraAPI : public UServerAPI
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
UServerJiraAPI();
|
||||
|
||||
virtual void ReturnListOfBugs() override;
|
||||
virtual void PrepareForm() override;
|
||||
virtual void SendFormData(const FUnrealzillaPostData &PostData) override;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user