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"
|
#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()
|
void UServerAPI::ReturnListOfBugs()
|
||||||
{
|
{
|
||||||
this->BugDataResponse.Execute(TArray<FUnrealzillaBugData>());
|
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)
|
const FString UServerAPI::FormatQueryString(const TMap<FString, FString> &QueryData)
|
||||||
{
|
{
|
||||||
TArray<FString> AssembledKeyValuePairs;
|
TArray<FString> AssembledKeyValuePairs;
|
||||||
@ -116,3 +115,25 @@ const FString UServerAPI::FormatQueryString(const TMap<FString, FString> &QueryD
|
|||||||
|
|
||||||
return FString::Join(AssembledKeyValuePairs, TEXT("&"));
|
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"
|
#include "Kismet/GameplayStatics.h"
|
||||||
|
|
||||||
|
|
||||||
|
UServerBugzillaAPI::UServerBugzillaAPI()
|
||||||
|
{
|
||||||
|
this->FullURL = UServerAPI::URLBuilder(
|
||||||
|
GetDefault<UUnrealzillaGlobalSettings>()->BugzillaSubmissionServer,
|
||||||
|
GetDefault<UUnrealzillaGlobalSettings>()->BugzillaRESTURI
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void UServerBugzillaAPI::ReturnListOfBugs()
|
void UServerBugzillaAPI::ReturnListOfBugs()
|
||||||
{
|
{
|
||||||
const FString FullURL = GetDefault<UUnrealzillaGlobalSettings>()->BugzillaSubmissionServer + GetDefault<UUnrealzillaGlobalSettings>()->BugzillaRESTURI;
|
|
||||||
|
|
||||||
TArray<FString> StatusQueries;
|
TArray<FString> StatusQueries;
|
||||||
if (GetDefault<UUnrealzillaGlobalSettings>()->bShowUnresolvedBugs)
|
if (GetDefault<UUnrealzillaGlobalSettings>()->bShowUnresolvedBugs)
|
||||||
{
|
{
|
||||||
@ -44,7 +51,7 @@ void UServerBugzillaAPI::ReturnListOfBugs()
|
|||||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> SeverityRequest = HttpModule.CreateRequest();
|
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> SeverityRequest = HttpModule.CreateRequest();
|
||||||
SeverityRequest->SetVerb(TEXT("GET"));
|
SeverityRequest->SetVerb(TEXT("GET"));
|
||||||
SeverityRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
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->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ListOfBugsResponse);
|
||||||
SeverityRequest->ProcessRequest();
|
SeverityRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
@ -88,8 +95,6 @@ void UServerBugzillaAPI::ListOfBugsResponse(FHttpRequestPtr Request, FHttpRespon
|
|||||||
|
|
||||||
void UServerBugzillaAPI::PrepareForm()
|
void UServerBugzillaAPI::PrepareForm()
|
||||||
{
|
{
|
||||||
const FString FullURL = GetDefault<UUnrealzillaGlobalSettings>()->BugzillaSubmissionServer + GetDefault<UUnrealzillaGlobalSettings>()->BugzillaRESTURI;
|
|
||||||
|
|
||||||
// Assemble query data into key:value pairs
|
// Assemble query data into key:value pairs
|
||||||
TMap<FString, FString> QueryData;
|
TMap<FString, FString> QueryData;
|
||||||
QueryData.Add("api_key", GetDefault<UUnrealzillaGlobalSettings>()->BugzillaAPIKey);
|
QueryData.Add("api_key", GetDefault<UUnrealzillaGlobalSettings>()->BugzillaAPIKey);
|
||||||
@ -100,7 +105,7 @@ void UServerBugzillaAPI::PrepareForm()
|
|||||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> ProductRequest = HttpModule.CreateRequest();
|
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> ProductRequest = HttpModule.CreateRequest();
|
||||||
ProductRequest->SetVerb(TEXT("GET"));
|
ProductRequest->SetVerb(TEXT("GET"));
|
||||||
ProductRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
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->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerProductInfoResponse);
|
||||||
ProductRequest->ProcessRequest();
|
ProductRequest->ProcessRequest();
|
||||||
|
|
||||||
@ -108,7 +113,7 @@ void UServerBugzillaAPI::PrepareForm()
|
|||||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> SeverityRequest = HttpModule.CreateRequest();
|
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> SeverityRequest = HttpModule.CreateRequest();
|
||||||
SeverityRequest->SetVerb(TEXT("GET"));
|
SeverityRequest->SetVerb(TEXT("GET"));
|
||||||
SeverityRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
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->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerSeverityInfoResponse);
|
||||||
SeverityRequest->ProcessRequest();
|
SeverityRequest->ProcessRequest();
|
||||||
|
|
||||||
@ -116,7 +121,7 @@ void UServerBugzillaAPI::PrepareForm()
|
|||||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> PlatformsRequest = HttpModule.CreateRequest();
|
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> PlatformsRequest = HttpModule.CreateRequest();
|
||||||
PlatformsRequest->SetVerb(TEXT("GET"));
|
PlatformsRequest->SetVerb(TEXT("GET"));
|
||||||
PlatformsRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
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->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerPlatformInfoResponse);
|
||||||
PlatformsRequest->ProcessRequest();
|
PlatformsRequest->ProcessRequest();
|
||||||
|
|
||||||
@ -124,16 +129,13 @@ void UServerBugzillaAPI::PrepareForm()
|
|||||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> OSRequest = HttpModule.CreateRequest();
|
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> OSRequest = HttpModule.CreateRequest();
|
||||||
OSRequest->SetVerb(TEXT("GET"));
|
OSRequest->SetVerb(TEXT("GET"));
|
||||||
OSRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
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->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerOSInfoResponse);
|
||||||
OSRequest->ProcessRequest();
|
OSRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UServerBugzillaAPI::SendFormData(const FUnrealzillaPostData &PostData)
|
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
|
// Assemble query data into key:value pairs
|
||||||
TMap<FString, FString> QueryData;
|
TMap<FString, FString> QueryData;
|
||||||
QueryData.Add("api_key", GetDefault<UUnrealzillaGlobalSettings>()->BugzillaAPIKey);
|
QueryData.Add("api_key", GetDefault<UUnrealzillaGlobalSettings>()->BugzillaAPIKey);
|
||||||
@ -189,7 +191,7 @@ void UServerBugzillaAPI::SendFormData(const FUnrealzillaPostData &PostData)
|
|||||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> Request = HttpModule.CreateRequest();
|
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> Request = HttpModule.CreateRequest();
|
||||||
Request->SetVerb(TEXT("POST"));
|
Request->SetVerb(TEXT("POST"));
|
||||||
Request->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
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->SetContentAsString(PostJsonString);
|
||||||
Request->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerPOSTResponse);
|
Request->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerPOSTResponse);
|
||||||
Request->ProcessRequest();
|
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
|
// 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;
|
TArray<FString> StatusQueries;
|
||||||
StatusQueries.Add("id=" + FString::FromInt(ResponseData.id));
|
StatusQueries.Add("id=" + FString::FromInt(ResponseData.id));
|
||||||
if (GetDefault<UUnrealzillaGlobalSettings>()->bShowUnresolvedBugs)
|
if (GetDefault<UUnrealzillaGlobalSettings>()->bShowUnresolvedBugs)
|
||||||
@ -245,7 +245,7 @@ void UServerBugzillaAPI::ServerPOSTResponse(FHttpRequestPtr Request, FHttpRespon
|
|||||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> SeverityRequest = HttpModule.CreateRequest();
|
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> SeverityRequest = HttpModule.CreateRequest();
|
||||||
SeverityRequest->SetVerb(TEXT("GET"));
|
SeverityRequest->SetVerb(TEXT("GET"));
|
||||||
SeverityRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
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->OnProcessRequestComplete().BindUObject(this, &UServerBugzillaAPI::ServerPOSTUpdateMarkerResponse);
|
||||||
SeverityRequest->ProcessRequest();
|
SeverityRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
@ -454,9 +454,10 @@ void UServerBugzillaAPI::CheckIfAllFormResponsesAreIn()
|
|||||||
Data.OSList = this->OSList;
|
Data.OSList = this->OSList;
|
||||||
|
|
||||||
// Find a default version number to use if possible
|
// 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"))
|
else if (this->VersionsList.Contains("unspecified"))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -10,6 +10,15 @@
|
|||||||
#include "Kismet/GameplayStatics.h"
|
#include "Kismet/GameplayStatics.h"
|
||||||
|
|
||||||
|
|
||||||
|
UServerJiraAPI::UServerJiraAPI()
|
||||||
|
{
|
||||||
|
this->FullURL = UServerAPI::URLBuilder(
|
||||||
|
GetDefault<UUnrealzillaGlobalSettings>()->JiraSubmissionServer,
|
||||||
|
GetDefault<UUnrealzillaGlobalSettings>()->JiraRESTURI
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void UServerJiraAPI::ReturnListOfBugs()
|
void UServerJiraAPI::ReturnListOfBugs()
|
||||||
{
|
{
|
||||||
const FString FullURL = GetDefault<UUnrealzillaGlobalSettings>()->JiraSubmissionServer + "/rest";
|
const FString FullURL = GetDefault<UUnrealzillaGlobalSettings>()->JiraSubmissionServer + "/rest";
|
||||||
@ -454,9 +463,10 @@ void UServerJiraAPI::CheckIfAllFormResponsesAreIn()
|
|||||||
Data.OSList = this->OSList;
|
Data.OSList = this->OSList;
|
||||||
|
|
||||||
// Find a default version number to use if possible
|
// 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"))
|
else if (this->VersionsList.Contains("unspecified"))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -25,21 +25,20 @@ public:
|
|||||||
virtual void PrepareForm();
|
virtual void PrepareForm();
|
||||||
virtual void SendFormData(const FUnrealzillaPostData &PostData);
|
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> GetComponentsList() const { return this->ComponentsList; }
|
||||||
TArray<FString> GetSeverityList() const { return this->SeverityList; }
|
TArray<FString> GetSeverityList() const { return this->SeverityList; }
|
||||||
TArray<FString> GetVersionsList() const { return this->VersionsList; }
|
TArray<FString> GetVersionsList() const { return this->VersionsList; }
|
||||||
TArray<FString> GetPlatformsList() const { return this->PlatformsList; }
|
TArray<FString> GetPlatformsList() const { return this->PlatformsList; }
|
||||||
TArray<FString> GetOSList() const { return this->OSList; }
|
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:
|
protected:
|
||||||
void ServerConnectionError(const EHttpRequestStatus::Type Status);
|
void ServerConnectionError(const EHttpRequestStatus::Type Status);
|
||||||
|
|
||||||
@ -49,11 +48,15 @@ protected:
|
|||||||
void CreateError(const EErrorVerb &Verb, const FBugzillaJSONBugResponse &Data);
|
void CreateError(const EErrorVerb &Verb, const FBugzillaJSONBugResponse &Data);
|
||||||
void CreateError(const FString &ErrorMessage);
|
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 FormatQueryString(const TMap<FString, FString> &QueryData);
|
||||||
|
static const FString GetGameVersion();
|
||||||
|
|
||||||
TArray<FString> ComponentsList;
|
TArray<FString> ComponentsList;
|
||||||
TArray<FString> SeverityList;
|
TArray<FString> SeverityList;
|
||||||
TArray<FString> VersionsList;
|
TArray<FString> VersionsList;
|
||||||
TArray<FString> PlatformsList;
|
TArray<FString> PlatformsList;
|
||||||
TArray<FString> OSList;
|
TArray<FString> OSList;
|
||||||
|
|
||||||
|
FString FullURL;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -16,6 +16,8 @@ class UNREALZILLA_API UServerBugzillaAPI : public UServerAPI
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
UServerBugzillaAPI();
|
||||||
|
|
||||||
virtual void ReturnListOfBugs() override;
|
virtual void ReturnListOfBugs() override;
|
||||||
virtual void PrepareForm() override;
|
virtual void PrepareForm() override;
|
||||||
virtual void SendFormData(const FUnrealzillaPostData &PostData) override;
|
virtual void SendFormData(const FUnrealzillaPostData &PostData) override;
|
||||||
|
|||||||
@ -16,6 +16,8 @@ class UNREALZILLA_API UServerJiraAPI : public UServerAPI
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
UServerJiraAPI();
|
||||||
|
|
||||||
virtual void ReturnListOfBugs() override;
|
virtual void ReturnListOfBugs() override;
|
||||||
virtual void PrepareForm() override;
|
virtual void PrepareForm() override;
|
||||||
virtual void SendFormData(const FUnrealzillaPostData &PostData) override;
|
virtual void SendFormData(const FUnrealzillaPostData &PostData) override;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user