mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-07-02 13:40:54 +00:00
[cpp-ue4] Improved retry system to use Unreal's FHttpRetrySystem (#9382)
* Revert "[cpp-ue4] Added the possibility to retry requests easily with AsyncRetry method on the response and SetAutoRetryCount on the request" * [cpp-ue4] Improved retry system to use Unreal's FHttpRetrySystem * [cpp-ue4] Updated style guide link * update samples Co-authored-by: William Cheng <wing328hk@gmail.com>
This commit is contained in:
parent
32b2ea3291
commit
343d7eb712
@ -48,6 +48,7 @@ Code change should conform to the programming style guide of the respective lang
|
|||||||
- C#: https://msdn.microsoft.com/en-us/library/vstudio/ff926074.aspx
|
- C#: https://msdn.microsoft.com/en-us/library/vstudio/ff926074.aspx
|
||||||
- C++: https://google.github.io/styleguide/cppguide.html
|
- C++: https://google.github.io/styleguide/cppguide.html
|
||||||
- C++ (Tizen): https://wiki.tizen.org/Native_Platform_Coding_Idiom_and_Style_Guide#C.2B.2B_Coding_Style
|
- C++ (Tizen): https://wiki.tizen.org/Native_Platform_Coding_Idiom_and_Style_Guide#C.2B.2B_Coding_Style
|
||||||
|
- C++ (Unreal Engine 4): https://docs.unrealengine.com/en-US/ProductionPipelines/DevelopmentSetup/CodingStandard/index.html
|
||||||
- Clojure: https://github.com/bbatsov/clojure-style-guide
|
- Clojure: https://github.com/bbatsov/clojure-style-guide
|
||||||
- Crystal: https://crystal-lang.org/reference/conventions/coding_style.html
|
- Crystal: https://crystal-lang.org/reference/conventions/coding_style.html
|
||||||
- Dart: https://www.dartlang.org/guides/language/effective-dart/style
|
- Dart: https://www.dartlang.org/guides/language/effective-dart/style
|
||||||
|
@ -15,9 +15,19 @@ public:
|
|||||||
{{classname}}();
|
{{classname}}();
|
||||||
~{{classname}}();
|
~{{classname}}();
|
||||||
|
|
||||||
|
/* Sets the URL Endpoint.
|
||||||
|
* Note: several fallback endpoints can be configured in request retry policies, see Request::SetShouldRetry */
|
||||||
void SetURL(const FString& Url);
|
void SetURL(const FString& Url);
|
||||||
|
|
||||||
|
/* Adds global header params to all requests */
|
||||||
void AddHeaderParam(const FString& Key, const FString& Value);
|
void AddHeaderParam(const FString& Key, const FString& Value);
|
||||||
void ClearHeaderParams();
|
void ClearHeaderParams();
|
||||||
|
|
||||||
|
/* Sets the retry manager to the user-defined retry manager. User must manage the lifetime of the retry manager.
|
||||||
|
* If no retry manager is specified and a request needs retries, a default retry manager will be used.
|
||||||
|
* See also: Request::SetShouldRetry */
|
||||||
|
void SetHttpRetryManager(FHttpRetrySystem::FManager& RetryManager);
|
||||||
|
FHttpRetrySystem::FManager& GetHttpRetryManager();
|
||||||
|
|
||||||
{{#operations}}{{#operation}}class {{operationIdCamelCase}}Request;
|
{{#operations}}{{#operation}}class {{operationIdCamelCase}}Request;
|
||||||
class {{operationIdCamelCase}}Response;
|
class {{operationIdCamelCase}}Response;
|
||||||
@ -27,15 +37,17 @@ public:
|
|||||||
{{#operations}}{{#operation}}{{#description}}/* {{{description}}} */
|
{{#operations}}{{#operation}}{{#description}}/* {{{description}}} */
|
||||||
{{/description}}bool {{operationIdCamelCase}}(const {{operationIdCamelCase}}Request& Request, const F{{operationIdCamelCase}}Delegate& Delegate = F{{operationIdCamelCase}}Delegate()) const;
|
{{/description}}bool {{operationIdCamelCase}}(const {{operationIdCamelCase}}Request& Request, const F{{operationIdCamelCase}}Delegate& Delegate = F{{operationIdCamelCase}}Delegate()) const;
|
||||||
{{/operation}}{{/operations}}
|
{{/operation}}{{/operations}}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
{{#operations}}{{#operation}}void On{{operationIdCamelCase}}Response(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, F{{operationIdCamelCase}}Delegate Delegate, int AutoRetryCount) const;
|
{{#operations}}{{#operation}}void On{{operationIdCamelCase}}Response(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, F{{operationIdCamelCase}}Delegate Delegate) const;
|
||||||
{{/operation}}{{/operations}}
|
{{/operation}}{{/operations}}
|
||||||
|
FHttpRequestRef CreateHttpRequest(const Request& Request) const;
|
||||||
bool IsValid() const;
|
bool IsValid() const;
|
||||||
void HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const;
|
void HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const;
|
||||||
|
|
||||||
FString Url;
|
FString Url;
|
||||||
TMap<FString,FString> AdditionalHeaderParams;
|
TMap<FString,FString> AdditionalHeaderParams;
|
||||||
|
mutable FHttpRetrySystem::FManager* RetryManager = nullptr;
|
||||||
|
mutable TUniquePtr<HttpRetryManager> DefaultRetryManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
{{#cppNamespaceDeclarations}}
|
{{#cppNamespaceDeclarations}}
|
||||||
|
@ -45,6 +45,40 @@ bool {{classname}}::IsValid() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void {{classname}}::SetHttpRetryManager(FHttpRetrySystem::FManager& InRetryManager)
|
||||||
|
{
|
||||||
|
if(RetryManager != &GetHttpRetryManager())
|
||||||
|
{
|
||||||
|
DefaultRetryManager.Reset();
|
||||||
|
RetryManager = &InRetryManager;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FHttpRetrySystem::FManager& {{classname}}::GetHttpRetryManager()
|
||||||
|
{
|
||||||
|
return *RetryManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
FHttpRequestRef {{classname}}::CreateHttpRequest(const Request& Request) const
|
||||||
|
{
|
||||||
|
if (!Request.GetRetryParams().IsSet())
|
||||||
|
{
|
||||||
|
return FHttpModule::Get().CreateRequest();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!RetryManager)
|
||||||
|
{
|
||||||
|
// Create default retry manager if none was specified
|
||||||
|
DefaultRetryManager = MakeUnique<HttpRetryManager>(6, 60);
|
||||||
|
RetryManager = DefaultRetryManager.Get();
|
||||||
|
}
|
||||||
|
|
||||||
|
const HttpRetryParams& Params = Request.GetRetryParams().GetValue();
|
||||||
|
return RetryManager->CreateRequest(Params.RetryLimitCountOverride, Params.RetryTimeoutRelativeSecondsOverride, Params.RetryResponseCodes, Params.RetryVerbs, Params.RetryDomains);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void {{classname}}::HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const
|
void {{classname}}::HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const
|
||||||
{
|
{
|
||||||
InOutResponse.SetHttpResponse(HttpResponse);
|
InOutResponse.SetHttpResponse(HttpResponse);
|
||||||
@ -96,7 +130,7 @@ bool {{classname}}::{{operationIdCamelCase}}(const {{operationIdCamelCase}}Reque
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -106,26 +140,15 @@ bool {{classname}}::{{operationIdCamelCase}}(const {{operationIdCamelCase}}Reque
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &{{classname}}::On{{operationIdCamelCase}}Response, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &{{classname}}::On{{operationIdCamelCase}}Response, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void {{classname}}::On{{operationIdCamelCase}}Response(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, F{{operationIdCamelCase}}Delegate Delegate, int AutoRetryCount) const
|
void {{classname}}::On{{operationIdCamelCase}}Response(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, F{{operationIdCamelCase}}Delegate Delegate) const
|
||||||
{
|
{
|
||||||
{{operationIdCamelCase}}Response Response;
|
{{operationIdCamelCase}}Response Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &{{classname}}::On{{operationIdCamelCase}}Response, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{{/operation}}
|
{{/operation}}
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
#include "Interfaces/IHttpResponse.h"
|
#include "Interfaces/IHttpResponse.h"
|
||||||
#include "Serialization/JsonWriter.h"
|
#include "Serialization/JsonWriter.h"
|
||||||
#include "Dom/JsonObject.h"
|
#include "Dom/JsonObject.h"
|
||||||
|
#include "HttpRetrySystem.h"
|
||||||
|
#include "Containers/Ticker.h"
|
||||||
|
|
||||||
{{#cppNamespaceDeclarations}}
|
{{#cppNamespaceDeclarations}}
|
||||||
namespace {{this}}
|
namespace {{this}}
|
||||||
@ -12,6 +14,31 @@ namespace {{this}}
|
|||||||
{{/cppNamespaceDeclarations}}
|
{{/cppNamespaceDeclarations}}
|
||||||
|
|
||||||
typedef TSharedRef<TJsonWriter<>> JsonWriter;
|
typedef TSharedRef<TJsonWriter<>> JsonWriter;
|
||||||
|
using namespace FHttpRetrySystem;
|
||||||
|
|
||||||
|
struct {{dllapi}} HttpRetryManager : public FManager, public FTickerObjectBase
|
||||||
|
{
|
||||||
|
using FManager::FManager;
|
||||||
|
|
||||||
|
bool Tick(float DeltaTime) final;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct {{dllapi}} HttpRetryParams
|
||||||
|
{
|
||||||
|
HttpRetryParams(
|
||||||
|
const FRetryLimitCountSetting& InRetryLimitCountOverride = FRetryLimitCountSetting(),
|
||||||
|
const FRetryTimeoutRelativeSecondsSetting& InRetryTimeoutRelativeSecondsOverride = FRetryTimeoutRelativeSecondsSetting(),
|
||||||
|
const FRetryResponseCodes& InRetryResponseCodes = FRetryResponseCodes(),
|
||||||
|
const FRetryVerbs& InRetryVerbs = FRetryVerbs(),
|
||||||
|
const FRetryDomainsPtr& InRetryDomains = FRetryDomainsPtr()
|
||||||
|
);
|
||||||
|
|
||||||
|
FRetryLimitCountSetting RetryLimitCountOverride;
|
||||||
|
FRetryTimeoutRelativeSecondsSetting RetryTimeoutRelativeSecondsOverride;
|
||||||
|
FRetryResponseCodes RetryResponseCodes;
|
||||||
|
FRetryVerbs RetryVerbs;
|
||||||
|
FRetryDomainsPtr RetryDomains;
|
||||||
|
};
|
||||||
|
|
||||||
class {{dllapi}} Model
|
class {{dllapi}} Model
|
||||||
{
|
{
|
||||||
@ -28,11 +55,12 @@ public:
|
|||||||
virtual void SetupHttpRequest(const FHttpRequestRef& HttpRequest) const = 0;
|
virtual void SetupHttpRequest(const FHttpRequestRef& HttpRequest) const = 0;
|
||||||
virtual FString ComputePath() const = 0;
|
virtual FString ComputePath() const = 0;
|
||||||
|
|
||||||
void SetAutoRetryCount(int InCount) { AutoRetryCount = InCount; }
|
/* Enables retry and optionally sets a retry policy for this request */
|
||||||
int GetAutoRetryCount() const { return AutoRetryCount; }
|
void SetShouldRetry(const HttpRetryParams& Params = HttpRetryParams()) { RetryParams = Params; }
|
||||||
|
const TOptional<HttpRetryParams>& GetRetryParams() const { return RetryParams; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int AutoRetryCount = 0;
|
TOptional<HttpRetryParams> RetryParams;
|
||||||
};
|
};
|
||||||
|
|
||||||
class {{dllapi}} Response
|
class {{dllapi}} Response
|
||||||
@ -44,8 +72,6 @@ public:
|
|||||||
void SetSuccessful(bool InSuccessful) { Successful = InSuccessful; }
|
void SetSuccessful(bool InSuccessful) { Successful = InSuccessful; }
|
||||||
bool IsSuccessful() const { return Successful; }
|
bool IsSuccessful() const { return Successful; }
|
||||||
|
|
||||||
void AsyncRetry() const;
|
|
||||||
|
|
||||||
virtual void SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode);
|
virtual void SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode);
|
||||||
EHttpResponseCodes::Type GetHttpResponseCode() const { return ResponseCode; }
|
EHttpResponseCodes::Type GetHttpResponseCode() const { return ResponseCode; }
|
||||||
|
|
||||||
@ -55,15 +81,11 @@ public:
|
|||||||
void SetHttpResponse(const FHttpResponsePtr& InHttpResponse) { HttpResponse = InHttpResponse; }
|
void SetHttpResponse(const FHttpResponsePtr& InHttpResponse) { HttpResponse = InHttpResponse; }
|
||||||
const FHttpResponsePtr& GetHttpResponse() const { return HttpResponse; }
|
const FHttpResponsePtr& GetHttpResponse() const { return HttpResponse; }
|
||||||
|
|
||||||
void SetHttpRequest(const FHttpRequestPtr& InHttpRequest) { HttpRequest = InHttpRequest; }
|
|
||||||
const FHttpRequestPtr& GetHttpRequest() const { return HttpRequest; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool Successful;
|
bool Successful;
|
||||||
EHttpResponseCodes::Type ResponseCode;
|
EHttpResponseCodes::Type ResponseCode;
|
||||||
FString ResponseString;
|
FString ResponseString;
|
||||||
FHttpResponsePtr HttpResponse;
|
FHttpResponsePtr HttpResponse;
|
||||||
FHttpRequestPtr HttpRequest;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
{{#cppNamespaceDeclarations}}
|
{{#cppNamespaceDeclarations}}
|
||||||
|
@ -1,13 +1,30 @@
|
|||||||
{{>licenseInfo}}
|
{{>licenseInfo}}
|
||||||
#include "{{modelNamePrefix}}BaseModel.h"
|
#include "{{modelNamePrefix}}BaseModel.h"
|
||||||
|
|
||||||
#include "Async/Async.h"
|
|
||||||
|
|
||||||
{{#cppNamespaceDeclarations}}
|
{{#cppNamespaceDeclarations}}
|
||||||
namespace {{this}}
|
namespace {{this}}
|
||||||
{
|
{
|
||||||
{{/cppNamespaceDeclarations}}
|
{{/cppNamespaceDeclarations}}
|
||||||
|
|
||||||
|
bool HttpRetryManager::Tick(float DeltaTime)
|
||||||
|
{
|
||||||
|
FManager::Update();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
HttpRetryParams::HttpRetryParams(const FRetryLimitCountSetting& InRetryLimitCountOverride /*= FRetryLimitCountSetting()*/,
|
||||||
|
const FRetryTimeoutRelativeSecondsSetting& InRetryTimeoutRelativeSecondsOverride /*= FRetryTimeoutRelativeSecondsSetting()*/,
|
||||||
|
const FRetryResponseCodes& InRetryResponseCodes /*= FRetryResponseCodes()*/,
|
||||||
|
const FRetryVerbs& InRetryVerbs /*= FRetryVerbs()*/,
|
||||||
|
const FRetryDomainsPtr& InRetryDomains /*= FRetryDomainsPtr() */)
|
||||||
|
: RetryLimitCountOverride(InRetryLimitCountOverride)
|
||||||
|
, RetryTimeoutRelativeSecondsOverride(InRetryTimeoutRelativeSecondsOverride)
|
||||||
|
, RetryResponseCodes(InRetryResponseCodes)
|
||||||
|
, RetryVerbs(InRetryVerbs)
|
||||||
|
, RetryDomains(InRetryDomains)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Response::SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode)
|
void Response::SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode)
|
||||||
{
|
{
|
||||||
ResponseCode = InHttpResponseCode;
|
ResponseCode = InHttpResponseCode;
|
||||||
@ -18,15 +35,6 @@ void Response::SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Response::AsyncRetry() const
|
|
||||||
{
|
|
||||||
// Unfortunately, it is currently usafe to call ProcessRequest() directly here.
|
|
||||||
// This is because the HttpManager will remove all references to this HttpRequest in FHttpManager::Tick including the new request we just added, instead of removing just one.
|
|
||||||
// This will lead to the request's destruction and eventually a crash.
|
|
||||||
// The only solution is therefore to ensure we are taking an extra reference to the request, and that the request is added after the queue is flushed.
|
|
||||||
Async(EAsyncExecution::TaskGraph, [AddRef = FHttpRequestPtr(GetHttpRequest())](){ AddRef->ProcessRequest(); });
|
|
||||||
}
|
|
||||||
|
|
||||||
{{#cppNamespaceDeclarations}}
|
{{#cppNamespaceDeclarations}}
|
||||||
}
|
}
|
||||||
{{/cppNamespaceDeclarations}}
|
{{/cppNamespaceDeclarations}}
|
@ -12,11 +12,28 @@
|
|||||||
|
|
||||||
#include "OpenAPIBaseModel.h"
|
#include "OpenAPIBaseModel.h"
|
||||||
|
|
||||||
#include "Async/Async.h"
|
|
||||||
|
|
||||||
namespace OpenAPI
|
namespace OpenAPI
|
||||||
{
|
{
|
||||||
|
|
||||||
|
bool HttpRetryManager::Tick(float DeltaTime)
|
||||||
|
{
|
||||||
|
FManager::Update();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
HttpRetryParams::HttpRetryParams(const FRetryLimitCountSetting& InRetryLimitCountOverride /*= FRetryLimitCountSetting()*/,
|
||||||
|
const FRetryTimeoutRelativeSecondsSetting& InRetryTimeoutRelativeSecondsOverride /*= FRetryTimeoutRelativeSecondsSetting()*/,
|
||||||
|
const FRetryResponseCodes& InRetryResponseCodes /*= FRetryResponseCodes()*/,
|
||||||
|
const FRetryVerbs& InRetryVerbs /*= FRetryVerbs()*/,
|
||||||
|
const FRetryDomainsPtr& InRetryDomains /*= FRetryDomainsPtr() */)
|
||||||
|
: RetryLimitCountOverride(InRetryLimitCountOverride)
|
||||||
|
, RetryTimeoutRelativeSecondsOverride(InRetryTimeoutRelativeSecondsOverride)
|
||||||
|
, RetryResponseCodes(InRetryResponseCodes)
|
||||||
|
, RetryVerbs(InRetryVerbs)
|
||||||
|
, RetryDomains(InRetryDomains)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Response::SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode)
|
void Response::SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode)
|
||||||
{
|
{
|
||||||
ResponseCode = InHttpResponseCode;
|
ResponseCode = InHttpResponseCode;
|
||||||
@ -27,13 +44,4 @@ void Response::SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Response::AsyncRetry() const
|
|
||||||
{
|
|
||||||
// Unfortunately, it is currently usafe to call ProcessRequest() directly here.
|
|
||||||
// This is because the HttpManager will remove all references to this HttpRequest in FHttpManager::Tick including the new request we just added, instead of removing just one.
|
|
||||||
// This will lead to the request's destruction and eventually a crash.
|
|
||||||
// The only solution is therefore to ensure we are taking an extra reference to the request, and that the request is added after the queue is flushed.
|
|
||||||
Async(EAsyncExecution::TaskGraph, [AddRef = FHttpRequestPtr(GetHttpRequest())](){ AddRef->ProcessRequest(); });
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,40 @@ bool OpenAPIPetApi::IsValid() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OpenAPIPetApi::SetHttpRetryManager(FHttpRetrySystem::FManager& InRetryManager)
|
||||||
|
{
|
||||||
|
if(RetryManager != &GetHttpRetryManager())
|
||||||
|
{
|
||||||
|
DefaultRetryManager.Reset();
|
||||||
|
RetryManager = &InRetryManager;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FHttpRetrySystem::FManager& OpenAPIPetApi::GetHttpRetryManager()
|
||||||
|
{
|
||||||
|
return *RetryManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
FHttpRequestRef OpenAPIPetApi::CreateHttpRequest(const Request& Request) const
|
||||||
|
{
|
||||||
|
if (!Request.GetRetryParams().IsSet())
|
||||||
|
{
|
||||||
|
return FHttpModule::Get().CreateRequest();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!RetryManager)
|
||||||
|
{
|
||||||
|
// Create default retry manager if none was specified
|
||||||
|
DefaultRetryManager = MakeUnique<HttpRetryManager>(6, 60);
|
||||||
|
RetryManager = DefaultRetryManager.Get();
|
||||||
|
}
|
||||||
|
|
||||||
|
const HttpRetryParams& Params = Request.GetRetryParams().GetValue();
|
||||||
|
return RetryManager->CreateRequest(Params.RetryLimitCountOverride, Params.RetryTimeoutRelativeSecondsOverride, Params.RetryResponseCodes, Params.RetryVerbs, Params.RetryDomains);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void OpenAPIPetApi::HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const
|
void OpenAPIPetApi::HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const
|
||||||
{
|
{
|
||||||
InOutResponse.SetHttpResponse(HttpResponse);
|
InOutResponse.SetHttpResponse(HttpResponse);
|
||||||
@ -103,7 +137,7 @@ bool OpenAPIPetApi::AddPet(const AddPetRequest& Request, const FAddPetDelegate&
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -113,26 +147,15 @@ bool OpenAPIPetApi::AddPet(const AddPetRequest& Request, const FAddPetDelegate&
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnAddPetResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnAddPetResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIPetApi::OnAddPetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FAddPetDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIPetApi::OnAddPetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FAddPetDelegate Delegate) const
|
||||||
{
|
{
|
||||||
AddPetResponse Response;
|
AddPetResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnAddPetResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIPetApi::DeletePet(const DeletePetRequest& Request, const FDeletePetDelegate& Delegate /*= FDeletePetDelegate()*/) const
|
bool OpenAPIPetApi::DeletePet(const DeletePetRequest& Request, const FDeletePetDelegate& Delegate /*= FDeletePetDelegate()*/) const
|
||||||
@ -140,7 +163,7 @@ bool OpenAPIPetApi::DeletePet(const DeletePetRequest& Request, const FDeletePetD
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -150,26 +173,15 @@ bool OpenAPIPetApi::DeletePet(const DeletePetRequest& Request, const FDeletePetD
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnDeletePetResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnDeletePetResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIPetApi::OnDeletePetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeletePetDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIPetApi::OnDeletePetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeletePetDelegate Delegate) const
|
||||||
{
|
{
|
||||||
DeletePetResponse Response;
|
DeletePetResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnDeletePetResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIPetApi::FindPetsByStatus(const FindPetsByStatusRequest& Request, const FFindPetsByStatusDelegate& Delegate /*= FFindPetsByStatusDelegate()*/) const
|
bool OpenAPIPetApi::FindPetsByStatus(const FindPetsByStatusRequest& Request, const FFindPetsByStatusDelegate& Delegate /*= FFindPetsByStatusDelegate()*/) const
|
||||||
@ -177,7 +189,7 @@ bool OpenAPIPetApi::FindPetsByStatus(const FindPetsByStatusRequest& Request, con
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -187,26 +199,15 @@ bool OpenAPIPetApi::FindPetsByStatus(const FindPetsByStatusRequest& Request, con
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnFindPetsByStatusResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnFindPetsByStatusResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIPetApi::OnFindPetsByStatusResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FFindPetsByStatusDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIPetApi::OnFindPetsByStatusResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FFindPetsByStatusDelegate Delegate) const
|
||||||
{
|
{
|
||||||
FindPetsByStatusResponse Response;
|
FindPetsByStatusResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnFindPetsByStatusResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIPetApi::FindPetsByTags(const FindPetsByTagsRequest& Request, const FFindPetsByTagsDelegate& Delegate /*= FFindPetsByTagsDelegate()*/) const
|
bool OpenAPIPetApi::FindPetsByTags(const FindPetsByTagsRequest& Request, const FFindPetsByTagsDelegate& Delegate /*= FFindPetsByTagsDelegate()*/) const
|
||||||
@ -214,7 +215,7 @@ bool OpenAPIPetApi::FindPetsByTags(const FindPetsByTagsRequest& Request, const F
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -224,26 +225,15 @@ bool OpenAPIPetApi::FindPetsByTags(const FindPetsByTagsRequest& Request, const F
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnFindPetsByTagsResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnFindPetsByTagsResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIPetApi::OnFindPetsByTagsResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FFindPetsByTagsDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIPetApi::OnFindPetsByTagsResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FFindPetsByTagsDelegate Delegate) const
|
||||||
{
|
{
|
||||||
FindPetsByTagsResponse Response;
|
FindPetsByTagsResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnFindPetsByTagsResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIPetApi::GetPetById(const GetPetByIdRequest& Request, const FGetPetByIdDelegate& Delegate /*= FGetPetByIdDelegate()*/) const
|
bool OpenAPIPetApi::GetPetById(const GetPetByIdRequest& Request, const FGetPetByIdDelegate& Delegate /*= FGetPetByIdDelegate()*/) const
|
||||||
@ -251,7 +241,7 @@ bool OpenAPIPetApi::GetPetById(const GetPetByIdRequest& Request, const FGetPetBy
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -261,26 +251,15 @@ bool OpenAPIPetApi::GetPetById(const GetPetByIdRequest& Request, const FGetPetBy
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnGetPetByIdResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnGetPetByIdResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIPetApi::OnGetPetByIdResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetPetByIdDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIPetApi::OnGetPetByIdResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetPetByIdDelegate Delegate) const
|
||||||
{
|
{
|
||||||
GetPetByIdResponse Response;
|
GetPetByIdResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnGetPetByIdResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIPetApi::UpdatePet(const UpdatePetRequest& Request, const FUpdatePetDelegate& Delegate /*= FUpdatePetDelegate()*/) const
|
bool OpenAPIPetApi::UpdatePet(const UpdatePetRequest& Request, const FUpdatePetDelegate& Delegate /*= FUpdatePetDelegate()*/) const
|
||||||
@ -288,7 +267,7 @@ bool OpenAPIPetApi::UpdatePet(const UpdatePetRequest& Request, const FUpdatePetD
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -298,26 +277,15 @@ bool OpenAPIPetApi::UpdatePet(const UpdatePetRequest& Request, const FUpdatePetD
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnUpdatePetResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnUpdatePetResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIPetApi::OnUpdatePetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdatePetDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIPetApi::OnUpdatePetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdatePetDelegate Delegate) const
|
||||||
{
|
{
|
||||||
UpdatePetResponse Response;
|
UpdatePetResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnUpdatePetResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIPetApi::UpdatePetWithForm(const UpdatePetWithFormRequest& Request, const FUpdatePetWithFormDelegate& Delegate /*= FUpdatePetWithFormDelegate()*/) const
|
bool OpenAPIPetApi::UpdatePetWithForm(const UpdatePetWithFormRequest& Request, const FUpdatePetWithFormDelegate& Delegate /*= FUpdatePetWithFormDelegate()*/) const
|
||||||
@ -325,7 +293,7 @@ bool OpenAPIPetApi::UpdatePetWithForm(const UpdatePetWithFormRequest& Request, c
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -335,26 +303,15 @@ bool OpenAPIPetApi::UpdatePetWithForm(const UpdatePetWithFormRequest& Request, c
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnUpdatePetWithFormResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnUpdatePetWithFormResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIPetApi::OnUpdatePetWithFormResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdatePetWithFormDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIPetApi::OnUpdatePetWithFormResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdatePetWithFormDelegate Delegate) const
|
||||||
{
|
{
|
||||||
UpdatePetWithFormResponse Response;
|
UpdatePetWithFormResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnUpdatePetWithFormResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIPetApi::UploadFile(const UploadFileRequest& Request, const FUploadFileDelegate& Delegate /*= FUploadFileDelegate()*/) const
|
bool OpenAPIPetApi::UploadFile(const UploadFileRequest& Request, const FUploadFileDelegate& Delegate /*= FUploadFileDelegate()*/) const
|
||||||
@ -362,7 +319,7 @@ bool OpenAPIPetApi::UploadFile(const UploadFileRequest& Request, const FUploadFi
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -372,26 +329,15 @@ bool OpenAPIPetApi::UploadFile(const UploadFileRequest& Request, const FUploadFi
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnUploadFileResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnUploadFileResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIPetApi::OnUploadFileResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUploadFileDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIPetApi::OnUploadFileResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUploadFileDelegate Delegate) const
|
||||||
{
|
{
|
||||||
UploadFileResponse Response;
|
UploadFileResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIPetApi::OnUploadFileResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,40 @@ bool OpenAPIStoreApi::IsValid() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OpenAPIStoreApi::SetHttpRetryManager(FHttpRetrySystem::FManager& InRetryManager)
|
||||||
|
{
|
||||||
|
if(RetryManager != &GetHttpRetryManager())
|
||||||
|
{
|
||||||
|
DefaultRetryManager.Reset();
|
||||||
|
RetryManager = &InRetryManager;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FHttpRetrySystem::FManager& OpenAPIStoreApi::GetHttpRetryManager()
|
||||||
|
{
|
||||||
|
return *RetryManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
FHttpRequestRef OpenAPIStoreApi::CreateHttpRequest(const Request& Request) const
|
||||||
|
{
|
||||||
|
if (!Request.GetRetryParams().IsSet())
|
||||||
|
{
|
||||||
|
return FHttpModule::Get().CreateRequest();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!RetryManager)
|
||||||
|
{
|
||||||
|
// Create default retry manager if none was specified
|
||||||
|
DefaultRetryManager = MakeUnique<HttpRetryManager>(6, 60);
|
||||||
|
RetryManager = DefaultRetryManager.Get();
|
||||||
|
}
|
||||||
|
|
||||||
|
const HttpRetryParams& Params = Request.GetRetryParams().GetValue();
|
||||||
|
return RetryManager->CreateRequest(Params.RetryLimitCountOverride, Params.RetryTimeoutRelativeSecondsOverride, Params.RetryResponseCodes, Params.RetryVerbs, Params.RetryDomains);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void OpenAPIStoreApi::HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const
|
void OpenAPIStoreApi::HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const
|
||||||
{
|
{
|
||||||
InOutResponse.SetHttpResponse(HttpResponse);
|
InOutResponse.SetHttpResponse(HttpResponse);
|
||||||
@ -103,7 +137,7 @@ bool OpenAPIStoreApi::DeleteOrder(const DeleteOrderRequest& Request, const FDele
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -113,26 +147,15 @@ bool OpenAPIStoreApi::DeleteOrder(const DeleteOrderRequest& Request, const FDele
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnDeleteOrderResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnDeleteOrderResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIStoreApi::OnDeleteOrderResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeleteOrderDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIStoreApi::OnDeleteOrderResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeleteOrderDelegate Delegate) const
|
||||||
{
|
{
|
||||||
DeleteOrderResponse Response;
|
DeleteOrderResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnDeleteOrderResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIStoreApi::GetInventory(const GetInventoryRequest& Request, const FGetInventoryDelegate& Delegate /*= FGetInventoryDelegate()*/) const
|
bool OpenAPIStoreApi::GetInventory(const GetInventoryRequest& Request, const FGetInventoryDelegate& Delegate /*= FGetInventoryDelegate()*/) const
|
||||||
@ -140,7 +163,7 @@ bool OpenAPIStoreApi::GetInventory(const GetInventoryRequest& Request, const FGe
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -150,26 +173,15 @@ bool OpenAPIStoreApi::GetInventory(const GetInventoryRequest& Request, const FGe
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnGetInventoryResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnGetInventoryResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIStoreApi::OnGetInventoryResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetInventoryDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIStoreApi::OnGetInventoryResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetInventoryDelegate Delegate) const
|
||||||
{
|
{
|
||||||
GetInventoryResponse Response;
|
GetInventoryResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnGetInventoryResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIStoreApi::GetOrderById(const GetOrderByIdRequest& Request, const FGetOrderByIdDelegate& Delegate /*= FGetOrderByIdDelegate()*/) const
|
bool OpenAPIStoreApi::GetOrderById(const GetOrderByIdRequest& Request, const FGetOrderByIdDelegate& Delegate /*= FGetOrderByIdDelegate()*/) const
|
||||||
@ -177,7 +189,7 @@ bool OpenAPIStoreApi::GetOrderById(const GetOrderByIdRequest& Request, const FGe
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -187,26 +199,15 @@ bool OpenAPIStoreApi::GetOrderById(const GetOrderByIdRequest& Request, const FGe
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnGetOrderByIdResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnGetOrderByIdResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIStoreApi::OnGetOrderByIdResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetOrderByIdDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIStoreApi::OnGetOrderByIdResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetOrderByIdDelegate Delegate) const
|
||||||
{
|
{
|
||||||
GetOrderByIdResponse Response;
|
GetOrderByIdResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnGetOrderByIdResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIStoreApi::PlaceOrder(const PlaceOrderRequest& Request, const FPlaceOrderDelegate& Delegate /*= FPlaceOrderDelegate()*/) const
|
bool OpenAPIStoreApi::PlaceOrder(const PlaceOrderRequest& Request, const FPlaceOrderDelegate& Delegate /*= FPlaceOrderDelegate()*/) const
|
||||||
@ -214,7 +215,7 @@ bool OpenAPIStoreApi::PlaceOrder(const PlaceOrderRequest& Request, const FPlaceO
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -224,26 +225,15 @@ bool OpenAPIStoreApi::PlaceOrder(const PlaceOrderRequest& Request, const FPlaceO
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnPlaceOrderResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnPlaceOrderResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIStoreApi::OnPlaceOrderResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FPlaceOrderDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIStoreApi::OnPlaceOrderResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FPlaceOrderDelegate Delegate) const
|
||||||
{
|
{
|
||||||
PlaceOrderResponse Response;
|
PlaceOrderResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIStoreApi::OnPlaceOrderResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,40 @@ bool OpenAPIUserApi::IsValid() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OpenAPIUserApi::SetHttpRetryManager(FHttpRetrySystem::FManager& InRetryManager)
|
||||||
|
{
|
||||||
|
if(RetryManager != &GetHttpRetryManager())
|
||||||
|
{
|
||||||
|
DefaultRetryManager.Reset();
|
||||||
|
RetryManager = &InRetryManager;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FHttpRetrySystem::FManager& OpenAPIUserApi::GetHttpRetryManager()
|
||||||
|
{
|
||||||
|
return *RetryManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
FHttpRequestRef OpenAPIUserApi::CreateHttpRequest(const Request& Request) const
|
||||||
|
{
|
||||||
|
if (!Request.GetRetryParams().IsSet())
|
||||||
|
{
|
||||||
|
return FHttpModule::Get().CreateRequest();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!RetryManager)
|
||||||
|
{
|
||||||
|
// Create default retry manager if none was specified
|
||||||
|
DefaultRetryManager = MakeUnique<HttpRetryManager>(6, 60);
|
||||||
|
RetryManager = DefaultRetryManager.Get();
|
||||||
|
}
|
||||||
|
|
||||||
|
const HttpRetryParams& Params = Request.GetRetryParams().GetValue();
|
||||||
|
return RetryManager->CreateRequest(Params.RetryLimitCountOverride, Params.RetryTimeoutRelativeSecondsOverride, Params.RetryResponseCodes, Params.RetryVerbs, Params.RetryDomains);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void OpenAPIUserApi::HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const
|
void OpenAPIUserApi::HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const
|
||||||
{
|
{
|
||||||
InOutResponse.SetHttpResponse(HttpResponse);
|
InOutResponse.SetHttpResponse(HttpResponse);
|
||||||
@ -103,7 +137,7 @@ bool OpenAPIUserApi::CreateUser(const CreateUserRequest& Request, const FCreateU
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -113,26 +147,15 @@ bool OpenAPIUserApi::CreateUser(const CreateUserRequest& Request, const FCreateU
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUserResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUserResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIUserApi::OnCreateUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUserDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIUserApi::OnCreateUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUserDelegate Delegate) const
|
||||||
{
|
{
|
||||||
CreateUserResponse Response;
|
CreateUserResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUserResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIUserApi::CreateUsersWithArrayInput(const CreateUsersWithArrayInputRequest& Request, const FCreateUsersWithArrayInputDelegate& Delegate /*= FCreateUsersWithArrayInputDelegate()*/) const
|
bool OpenAPIUserApi::CreateUsersWithArrayInput(const CreateUsersWithArrayInputRequest& Request, const FCreateUsersWithArrayInputDelegate& Delegate /*= FCreateUsersWithArrayInputDelegate()*/) const
|
||||||
@ -140,7 +163,7 @@ bool OpenAPIUserApi::CreateUsersWithArrayInput(const CreateUsersWithArrayInputRe
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -150,26 +173,15 @@ bool OpenAPIUserApi::CreateUsersWithArrayInput(const CreateUsersWithArrayInputRe
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUsersWithArrayInputResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUsersWithArrayInputResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIUserApi::OnCreateUsersWithArrayInputResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUsersWithArrayInputDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIUserApi::OnCreateUsersWithArrayInputResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUsersWithArrayInputDelegate Delegate) const
|
||||||
{
|
{
|
||||||
CreateUsersWithArrayInputResponse Response;
|
CreateUsersWithArrayInputResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUsersWithArrayInputResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIUserApi::CreateUsersWithListInput(const CreateUsersWithListInputRequest& Request, const FCreateUsersWithListInputDelegate& Delegate /*= FCreateUsersWithListInputDelegate()*/) const
|
bool OpenAPIUserApi::CreateUsersWithListInput(const CreateUsersWithListInputRequest& Request, const FCreateUsersWithListInputDelegate& Delegate /*= FCreateUsersWithListInputDelegate()*/) const
|
||||||
@ -177,7 +189,7 @@ bool OpenAPIUserApi::CreateUsersWithListInput(const CreateUsersWithListInputRequ
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -187,26 +199,15 @@ bool OpenAPIUserApi::CreateUsersWithListInput(const CreateUsersWithListInputRequ
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUsersWithListInputResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUsersWithListInputResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIUserApi::OnCreateUsersWithListInputResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUsersWithListInputDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIUserApi::OnCreateUsersWithListInputResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUsersWithListInputDelegate Delegate) const
|
||||||
{
|
{
|
||||||
CreateUsersWithListInputResponse Response;
|
CreateUsersWithListInputResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUsersWithListInputResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIUserApi::DeleteUser(const DeleteUserRequest& Request, const FDeleteUserDelegate& Delegate /*= FDeleteUserDelegate()*/) const
|
bool OpenAPIUserApi::DeleteUser(const DeleteUserRequest& Request, const FDeleteUserDelegate& Delegate /*= FDeleteUserDelegate()*/) const
|
||||||
@ -214,7 +215,7 @@ bool OpenAPIUserApi::DeleteUser(const DeleteUserRequest& Request, const FDeleteU
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -224,26 +225,15 @@ bool OpenAPIUserApi::DeleteUser(const DeleteUserRequest& Request, const FDeleteU
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnDeleteUserResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnDeleteUserResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIUserApi::OnDeleteUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeleteUserDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIUserApi::OnDeleteUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeleteUserDelegate Delegate) const
|
||||||
{
|
{
|
||||||
DeleteUserResponse Response;
|
DeleteUserResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnDeleteUserResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIUserApi::GetUserByName(const GetUserByNameRequest& Request, const FGetUserByNameDelegate& Delegate /*= FGetUserByNameDelegate()*/) const
|
bool OpenAPIUserApi::GetUserByName(const GetUserByNameRequest& Request, const FGetUserByNameDelegate& Delegate /*= FGetUserByNameDelegate()*/) const
|
||||||
@ -251,7 +241,7 @@ bool OpenAPIUserApi::GetUserByName(const GetUserByNameRequest& Request, const FG
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -261,26 +251,15 @@ bool OpenAPIUserApi::GetUserByName(const GetUserByNameRequest& Request, const FG
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnGetUserByNameResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnGetUserByNameResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIUserApi::OnGetUserByNameResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetUserByNameDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIUserApi::OnGetUserByNameResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetUserByNameDelegate Delegate) const
|
||||||
{
|
{
|
||||||
GetUserByNameResponse Response;
|
GetUserByNameResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnGetUserByNameResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIUserApi::LoginUser(const LoginUserRequest& Request, const FLoginUserDelegate& Delegate /*= FLoginUserDelegate()*/) const
|
bool OpenAPIUserApi::LoginUser(const LoginUserRequest& Request, const FLoginUserDelegate& Delegate /*= FLoginUserDelegate()*/) const
|
||||||
@ -288,7 +267,7 @@ bool OpenAPIUserApi::LoginUser(const LoginUserRequest& Request, const FLoginUser
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -298,26 +277,15 @@ bool OpenAPIUserApi::LoginUser(const LoginUserRequest& Request, const FLoginUser
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnLoginUserResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnLoginUserResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIUserApi::OnLoginUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FLoginUserDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIUserApi::OnLoginUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FLoginUserDelegate Delegate) const
|
||||||
{
|
{
|
||||||
LoginUserResponse Response;
|
LoginUserResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnLoginUserResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIUserApi::LogoutUser(const LogoutUserRequest& Request, const FLogoutUserDelegate& Delegate /*= FLogoutUserDelegate()*/) const
|
bool OpenAPIUserApi::LogoutUser(const LogoutUserRequest& Request, const FLogoutUserDelegate& Delegate /*= FLogoutUserDelegate()*/) const
|
||||||
@ -325,7 +293,7 @@ bool OpenAPIUserApi::LogoutUser(const LogoutUserRequest& Request, const FLogoutU
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -335,26 +303,15 @@ bool OpenAPIUserApi::LogoutUser(const LogoutUserRequest& Request, const FLogoutU
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnLogoutUserResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnLogoutUserResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIUserApi::OnLogoutUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FLogoutUserDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIUserApi::OnLogoutUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FLogoutUserDelegate Delegate) const
|
||||||
{
|
{
|
||||||
LogoutUserResponse Response;
|
LogoutUserResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnLogoutUserResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenAPIUserApi::UpdateUser(const UpdateUserRequest& Request, const FUpdateUserDelegate& Delegate /*= FUpdateUserDelegate()*/) const
|
bool OpenAPIUserApi::UpdateUser(const UpdateUserRequest& Request, const FUpdateUserDelegate& Delegate /*= FUpdateUserDelegate()*/) const
|
||||||
@ -362,7 +319,7 @@ bool OpenAPIUserApi::UpdateUser(const UpdateUserRequest& Request, const FUpdateU
|
|||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
|
||||||
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
||||||
|
|
||||||
for(const auto& It : AdditionalHeaderParams)
|
for(const auto& It : AdditionalHeaderParams)
|
||||||
@ -372,26 +329,15 @@ bool OpenAPIUserApi::UpdateUser(const UpdateUserRequest& Request, const FUpdateU
|
|||||||
|
|
||||||
Request.SetupHttpRequest(HttpRequest);
|
Request.SetupHttpRequest(HttpRequest);
|
||||||
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnUpdateUserResponse, Delegate, Request.GetAutoRetryCount());
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnUpdateUserResponse, Delegate);
|
||||||
return HttpRequest->ProcessRequest();
|
return HttpRequest->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenAPIUserApi::OnUpdateUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdateUserDelegate Delegate, int AutoRetryCount) const
|
void OpenAPIUserApi::OnUpdateUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdateUserDelegate Delegate) const
|
||||||
{
|
{
|
||||||
UpdateUserResponse Response;
|
UpdateUserResponse Response;
|
||||||
Response.SetHttpRequest(HttpRequest);
|
|
||||||
|
|
||||||
HandleResponse(HttpResponse, bSucceeded, Response);
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
||||||
|
Delegate.ExecuteIfBound(Response);
|
||||||
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
||||||
{
|
|
||||||
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnUpdateUserResponse, Delegate, AutoRetryCount - 1);
|
|
||||||
Response.AsyncRetry();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Delegate.ExecuteIfBound(Response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,11 +16,38 @@
|
|||||||
#include "Interfaces/IHttpResponse.h"
|
#include "Interfaces/IHttpResponse.h"
|
||||||
#include "Serialization/JsonWriter.h"
|
#include "Serialization/JsonWriter.h"
|
||||||
#include "Dom/JsonObject.h"
|
#include "Dom/JsonObject.h"
|
||||||
|
#include "HttpRetrySystem.h"
|
||||||
|
#include "Containers/Ticker.h"
|
||||||
|
|
||||||
namespace OpenAPI
|
namespace OpenAPI
|
||||||
{
|
{
|
||||||
|
|
||||||
typedef TSharedRef<TJsonWriter<>> JsonWriter;
|
typedef TSharedRef<TJsonWriter<>> JsonWriter;
|
||||||
|
using namespace FHttpRetrySystem;
|
||||||
|
|
||||||
|
struct OPENAPI_API HttpRetryManager : public FManager, public FTickerObjectBase
|
||||||
|
{
|
||||||
|
using FManager::FManager;
|
||||||
|
|
||||||
|
bool Tick(float DeltaTime) final;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OPENAPI_API HttpRetryParams
|
||||||
|
{
|
||||||
|
HttpRetryParams(
|
||||||
|
const FRetryLimitCountSetting& InRetryLimitCountOverride = FRetryLimitCountSetting(),
|
||||||
|
const FRetryTimeoutRelativeSecondsSetting& InRetryTimeoutRelativeSecondsOverride = FRetryTimeoutRelativeSecondsSetting(),
|
||||||
|
const FRetryResponseCodes& InRetryResponseCodes = FRetryResponseCodes(),
|
||||||
|
const FRetryVerbs& InRetryVerbs = FRetryVerbs(),
|
||||||
|
const FRetryDomainsPtr& InRetryDomains = FRetryDomainsPtr()
|
||||||
|
);
|
||||||
|
|
||||||
|
FRetryLimitCountSetting RetryLimitCountOverride;
|
||||||
|
FRetryTimeoutRelativeSecondsSetting RetryTimeoutRelativeSecondsOverride;
|
||||||
|
FRetryResponseCodes RetryResponseCodes;
|
||||||
|
FRetryVerbs RetryVerbs;
|
||||||
|
FRetryDomainsPtr RetryDomains;
|
||||||
|
};
|
||||||
|
|
||||||
class OPENAPI_API Model
|
class OPENAPI_API Model
|
||||||
{
|
{
|
||||||
@ -37,11 +64,12 @@ public:
|
|||||||
virtual void SetupHttpRequest(const FHttpRequestRef& HttpRequest) const = 0;
|
virtual void SetupHttpRequest(const FHttpRequestRef& HttpRequest) const = 0;
|
||||||
virtual FString ComputePath() const = 0;
|
virtual FString ComputePath() const = 0;
|
||||||
|
|
||||||
void SetAutoRetryCount(int InCount) { AutoRetryCount = InCount; }
|
/* Enables retry and optionally sets a retry policy for this request */
|
||||||
int GetAutoRetryCount() const { return AutoRetryCount; }
|
void SetShouldRetry(const HttpRetryParams& Params = HttpRetryParams()) { RetryParams = Params; }
|
||||||
|
const TOptional<HttpRetryParams>& GetRetryParams() const { return RetryParams; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int AutoRetryCount = 0;
|
TOptional<HttpRetryParams> RetryParams;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OPENAPI_API Response
|
class OPENAPI_API Response
|
||||||
@ -53,8 +81,6 @@ public:
|
|||||||
void SetSuccessful(bool InSuccessful) { Successful = InSuccessful; }
|
void SetSuccessful(bool InSuccessful) { Successful = InSuccessful; }
|
||||||
bool IsSuccessful() const { return Successful; }
|
bool IsSuccessful() const { return Successful; }
|
||||||
|
|
||||||
void AsyncRetry() const;
|
|
||||||
|
|
||||||
virtual void SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode);
|
virtual void SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode);
|
||||||
EHttpResponseCodes::Type GetHttpResponseCode() const { return ResponseCode; }
|
EHttpResponseCodes::Type GetHttpResponseCode() const { return ResponseCode; }
|
||||||
|
|
||||||
@ -64,15 +90,11 @@ public:
|
|||||||
void SetHttpResponse(const FHttpResponsePtr& InHttpResponse) { HttpResponse = InHttpResponse; }
|
void SetHttpResponse(const FHttpResponsePtr& InHttpResponse) { HttpResponse = InHttpResponse; }
|
||||||
const FHttpResponsePtr& GetHttpResponse() const { return HttpResponse; }
|
const FHttpResponsePtr& GetHttpResponse() const { return HttpResponse; }
|
||||||
|
|
||||||
void SetHttpRequest(const FHttpRequestPtr& InHttpRequest) { HttpRequest = InHttpRequest; }
|
|
||||||
const FHttpRequestPtr& GetHttpRequest() const { return HttpRequest; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool Successful;
|
bool Successful;
|
||||||
EHttpResponseCodes::Type ResponseCode;
|
EHttpResponseCodes::Type ResponseCode;
|
||||||
FString ResponseString;
|
FString ResponseString;
|
||||||
FHttpResponsePtr HttpResponse;
|
FHttpResponsePtr HttpResponse;
|
||||||
FHttpRequestPtr HttpRequest;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,9 +24,19 @@ public:
|
|||||||
OpenAPIPetApi();
|
OpenAPIPetApi();
|
||||||
~OpenAPIPetApi();
|
~OpenAPIPetApi();
|
||||||
|
|
||||||
|
/* Sets the URL Endpoint.
|
||||||
|
* Note: several fallback endpoints can be configured in request retry policies, see Request::SetShouldRetry */
|
||||||
void SetURL(const FString& Url);
|
void SetURL(const FString& Url);
|
||||||
|
|
||||||
|
/* Adds global header params to all requests */
|
||||||
void AddHeaderParam(const FString& Key, const FString& Value);
|
void AddHeaderParam(const FString& Key, const FString& Value);
|
||||||
void ClearHeaderParams();
|
void ClearHeaderParams();
|
||||||
|
|
||||||
|
/* Sets the retry manager to the user-defined retry manager. User must manage the lifetime of the retry manager.
|
||||||
|
* If no retry manager is specified and a request needs retries, a default retry manager will be used.
|
||||||
|
* See also: Request::SetShouldRetry */
|
||||||
|
void SetHttpRetryManager(FHttpRetrySystem::FManager& RetryManager);
|
||||||
|
FHttpRetrySystem::FManager& GetHttpRetryManager();
|
||||||
|
|
||||||
class AddPetRequest;
|
class AddPetRequest;
|
||||||
class AddPetResponse;
|
class AddPetResponse;
|
||||||
@ -63,22 +73,24 @@ public:
|
|||||||
bool UpdatePetWithForm(const UpdatePetWithFormRequest& Request, const FUpdatePetWithFormDelegate& Delegate = FUpdatePetWithFormDelegate()) const;
|
bool UpdatePetWithForm(const UpdatePetWithFormRequest& Request, const FUpdatePetWithFormDelegate& Delegate = FUpdatePetWithFormDelegate()) const;
|
||||||
bool UploadFile(const UploadFileRequest& Request, const FUploadFileDelegate& Delegate = FUploadFileDelegate()) const;
|
bool UploadFile(const UploadFileRequest& Request, const FUploadFileDelegate& Delegate = FUploadFileDelegate()) const;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnAddPetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FAddPetDelegate Delegate, int AutoRetryCount) const;
|
void OnAddPetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FAddPetDelegate Delegate) const;
|
||||||
void OnDeletePetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeletePetDelegate Delegate, int AutoRetryCount) const;
|
void OnDeletePetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeletePetDelegate Delegate) const;
|
||||||
void OnFindPetsByStatusResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FFindPetsByStatusDelegate Delegate, int AutoRetryCount) const;
|
void OnFindPetsByStatusResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FFindPetsByStatusDelegate Delegate) const;
|
||||||
void OnFindPetsByTagsResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FFindPetsByTagsDelegate Delegate, int AutoRetryCount) const;
|
void OnFindPetsByTagsResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FFindPetsByTagsDelegate Delegate) const;
|
||||||
void OnGetPetByIdResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetPetByIdDelegate Delegate, int AutoRetryCount) const;
|
void OnGetPetByIdResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetPetByIdDelegate Delegate) const;
|
||||||
void OnUpdatePetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdatePetDelegate Delegate, int AutoRetryCount) const;
|
void OnUpdatePetResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdatePetDelegate Delegate) const;
|
||||||
void OnUpdatePetWithFormResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdatePetWithFormDelegate Delegate, int AutoRetryCount) const;
|
void OnUpdatePetWithFormResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdatePetWithFormDelegate Delegate) const;
|
||||||
void OnUploadFileResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUploadFileDelegate Delegate, int AutoRetryCount) const;
|
void OnUploadFileResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUploadFileDelegate Delegate) const;
|
||||||
|
|
||||||
|
FHttpRequestRef CreateHttpRequest(const Request& Request) const;
|
||||||
bool IsValid() const;
|
bool IsValid() const;
|
||||||
void HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const;
|
void HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const;
|
||||||
|
|
||||||
FString Url;
|
FString Url;
|
||||||
TMap<FString,FString> AdditionalHeaderParams;
|
TMap<FString,FString> AdditionalHeaderParams;
|
||||||
|
mutable FHttpRetrySystem::FManager* RetryManager = nullptr;
|
||||||
|
mutable TUniquePtr<HttpRetryManager> DefaultRetryManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,9 +24,19 @@ public:
|
|||||||
OpenAPIStoreApi();
|
OpenAPIStoreApi();
|
||||||
~OpenAPIStoreApi();
|
~OpenAPIStoreApi();
|
||||||
|
|
||||||
|
/* Sets the URL Endpoint.
|
||||||
|
* Note: several fallback endpoints can be configured in request retry policies, see Request::SetShouldRetry */
|
||||||
void SetURL(const FString& Url);
|
void SetURL(const FString& Url);
|
||||||
|
|
||||||
|
/* Adds global header params to all requests */
|
||||||
void AddHeaderParam(const FString& Key, const FString& Value);
|
void AddHeaderParam(const FString& Key, const FString& Value);
|
||||||
void ClearHeaderParams();
|
void ClearHeaderParams();
|
||||||
|
|
||||||
|
/* Sets the retry manager to the user-defined retry manager. User must manage the lifetime of the retry manager.
|
||||||
|
* If no retry manager is specified and a request needs retries, a default retry manager will be used.
|
||||||
|
* See also: Request::SetShouldRetry */
|
||||||
|
void SetHttpRetryManager(FHttpRetrySystem::FManager& RetryManager);
|
||||||
|
FHttpRetrySystem::FManager& GetHttpRetryManager();
|
||||||
|
|
||||||
class DeleteOrderRequest;
|
class DeleteOrderRequest;
|
||||||
class DeleteOrderResponse;
|
class DeleteOrderResponse;
|
||||||
@ -47,18 +57,20 @@ public:
|
|||||||
bool GetOrderById(const GetOrderByIdRequest& Request, const FGetOrderByIdDelegate& Delegate = FGetOrderByIdDelegate()) const;
|
bool GetOrderById(const GetOrderByIdRequest& Request, const FGetOrderByIdDelegate& Delegate = FGetOrderByIdDelegate()) const;
|
||||||
bool PlaceOrder(const PlaceOrderRequest& Request, const FPlaceOrderDelegate& Delegate = FPlaceOrderDelegate()) const;
|
bool PlaceOrder(const PlaceOrderRequest& Request, const FPlaceOrderDelegate& Delegate = FPlaceOrderDelegate()) const;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnDeleteOrderResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeleteOrderDelegate Delegate, int AutoRetryCount) const;
|
void OnDeleteOrderResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeleteOrderDelegate Delegate) const;
|
||||||
void OnGetInventoryResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetInventoryDelegate Delegate, int AutoRetryCount) const;
|
void OnGetInventoryResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetInventoryDelegate Delegate) const;
|
||||||
void OnGetOrderByIdResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetOrderByIdDelegate Delegate, int AutoRetryCount) const;
|
void OnGetOrderByIdResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetOrderByIdDelegate Delegate) const;
|
||||||
void OnPlaceOrderResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FPlaceOrderDelegate Delegate, int AutoRetryCount) const;
|
void OnPlaceOrderResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FPlaceOrderDelegate Delegate) const;
|
||||||
|
|
||||||
|
FHttpRequestRef CreateHttpRequest(const Request& Request) const;
|
||||||
bool IsValid() const;
|
bool IsValid() const;
|
||||||
void HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const;
|
void HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const;
|
||||||
|
|
||||||
FString Url;
|
FString Url;
|
||||||
TMap<FString,FString> AdditionalHeaderParams;
|
TMap<FString,FString> AdditionalHeaderParams;
|
||||||
|
mutable FHttpRetrySystem::FManager* RetryManager = nullptr;
|
||||||
|
mutable TUniquePtr<HttpRetryManager> DefaultRetryManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,9 +24,19 @@ public:
|
|||||||
OpenAPIUserApi();
|
OpenAPIUserApi();
|
||||||
~OpenAPIUserApi();
|
~OpenAPIUserApi();
|
||||||
|
|
||||||
|
/* Sets the URL Endpoint.
|
||||||
|
* Note: several fallback endpoints can be configured in request retry policies, see Request::SetShouldRetry */
|
||||||
void SetURL(const FString& Url);
|
void SetURL(const FString& Url);
|
||||||
|
|
||||||
|
/* Adds global header params to all requests */
|
||||||
void AddHeaderParam(const FString& Key, const FString& Value);
|
void AddHeaderParam(const FString& Key, const FString& Value);
|
||||||
void ClearHeaderParams();
|
void ClearHeaderParams();
|
||||||
|
|
||||||
|
/* Sets the retry manager to the user-defined retry manager. User must manage the lifetime of the retry manager.
|
||||||
|
* If no retry manager is specified and a request needs retries, a default retry manager will be used.
|
||||||
|
* See also: Request::SetShouldRetry */
|
||||||
|
void SetHttpRetryManager(FHttpRetrySystem::FManager& RetryManager);
|
||||||
|
FHttpRetrySystem::FManager& GetHttpRetryManager();
|
||||||
|
|
||||||
class CreateUserRequest;
|
class CreateUserRequest;
|
||||||
class CreateUserResponse;
|
class CreateUserResponse;
|
||||||
@ -63,22 +73,24 @@ public:
|
|||||||
bool LogoutUser(const LogoutUserRequest& Request, const FLogoutUserDelegate& Delegate = FLogoutUserDelegate()) const;
|
bool LogoutUser(const LogoutUserRequest& Request, const FLogoutUserDelegate& Delegate = FLogoutUserDelegate()) const;
|
||||||
bool UpdateUser(const UpdateUserRequest& Request, const FUpdateUserDelegate& Delegate = FUpdateUserDelegate()) const;
|
bool UpdateUser(const UpdateUserRequest& Request, const FUpdateUserDelegate& Delegate = FUpdateUserDelegate()) const;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnCreateUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUserDelegate Delegate, int AutoRetryCount) const;
|
void OnCreateUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUserDelegate Delegate) const;
|
||||||
void OnCreateUsersWithArrayInputResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUsersWithArrayInputDelegate Delegate, int AutoRetryCount) const;
|
void OnCreateUsersWithArrayInputResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUsersWithArrayInputDelegate Delegate) const;
|
||||||
void OnCreateUsersWithListInputResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUsersWithListInputDelegate Delegate, int AutoRetryCount) const;
|
void OnCreateUsersWithListInputResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUsersWithListInputDelegate Delegate) const;
|
||||||
void OnDeleteUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeleteUserDelegate Delegate, int AutoRetryCount) const;
|
void OnDeleteUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeleteUserDelegate Delegate) const;
|
||||||
void OnGetUserByNameResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetUserByNameDelegate Delegate, int AutoRetryCount) const;
|
void OnGetUserByNameResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetUserByNameDelegate Delegate) const;
|
||||||
void OnLoginUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FLoginUserDelegate Delegate, int AutoRetryCount) const;
|
void OnLoginUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FLoginUserDelegate Delegate) const;
|
||||||
void OnLogoutUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FLogoutUserDelegate Delegate, int AutoRetryCount) const;
|
void OnLogoutUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FLogoutUserDelegate Delegate) const;
|
||||||
void OnUpdateUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdateUserDelegate Delegate, int AutoRetryCount) const;
|
void OnUpdateUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdateUserDelegate Delegate) const;
|
||||||
|
|
||||||
|
FHttpRequestRef CreateHttpRequest(const Request& Request) const;
|
||||||
bool IsValid() const;
|
bool IsValid() const;
|
||||||
void HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const;
|
void HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const;
|
||||||
|
|
||||||
FString Url;
|
FString Url;
|
||||||
TMap<FString,FString> AdditionalHeaderParams;
|
TMap<FString,FString> AdditionalHeaderParams;
|
||||||
|
mutable FHttpRetrySystem::FManager* RetryManager = nullptr;
|
||||||
|
mutable TUniquePtr<HttpRetryManager> DefaultRetryManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user