mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-05-12 20:50:55 +00:00
* [cpp-ue4] Fixed enum values not being quoted. I'm not sure when this started breaking. * [cpp-ue4] UE 4.26 Compatibility: Replaced TSharedRef<IHttpRequest by FHttpRequestRef for better portability * [cpp-ue4] Improved DateTime parsing * [cpp-ue4] Made HttpFileInput constructors explicit * [cpp-ue4] Added the possibility to retry requests easily with AsyncRetry method on the response and SetAutoRetryCount on the request WIP auto retry [cpp-ue4] Adds support for instant retry * [cpp-ue4] Using TaskGraph instead of TaskGraphMainThread for async retries * update samples * remove trailing spaces Co-authored-by: Jean-Noel Gourdol <jngourdol@stormancer.com> Co-authored-by: William Cheng <wing328hk@gmail.com>
398 lines
12 KiB
C++
398 lines
12 KiB
C++
/**
|
|
* OpenAPI Petstore
|
|
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
|
*
|
|
* OpenAPI spec version: 1.0.0
|
|
*
|
|
*
|
|
* NOTE: This class is auto generated by OpenAPI Generator
|
|
* https://github.com/OpenAPITools/openapi-generator
|
|
* Do not edit the class manually.
|
|
*/
|
|
|
|
#include "OpenAPIUserApi.h"
|
|
|
|
#include "OpenAPIUserApiOperations.h"
|
|
#include "OpenAPIModule.h"
|
|
|
|
#include "HttpModule.h"
|
|
#include "Serialization/JsonSerializer.h"
|
|
|
|
namespace OpenAPI
|
|
{
|
|
|
|
OpenAPIUserApi::OpenAPIUserApi()
|
|
: Url(TEXT("http://petstore.swagger.io/v2"))
|
|
{
|
|
}
|
|
|
|
OpenAPIUserApi::~OpenAPIUserApi() {}
|
|
|
|
void OpenAPIUserApi::SetURL(const FString& InUrl)
|
|
{
|
|
Url = InUrl;
|
|
}
|
|
|
|
void OpenAPIUserApi::AddHeaderParam(const FString& Key, const FString& Value)
|
|
{
|
|
AdditionalHeaderParams.Add(Key, Value);
|
|
}
|
|
|
|
void OpenAPIUserApi::ClearHeaderParams()
|
|
{
|
|
AdditionalHeaderParams.Reset();
|
|
}
|
|
|
|
bool OpenAPIUserApi::IsValid() const
|
|
{
|
|
if (Url.IsEmpty())
|
|
{
|
|
UE_LOG(LogOpenAPI, Error, TEXT("OpenAPIUserApi: Endpoint Url is not set, request cannot be performed"));
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void OpenAPIUserApi::HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded, Response& InOutResponse) const
|
|
{
|
|
InOutResponse.SetHttpResponse(HttpResponse);
|
|
InOutResponse.SetSuccessful(bSucceeded);
|
|
|
|
if (bSucceeded && HttpResponse.IsValid())
|
|
{
|
|
InOutResponse.SetHttpResponseCode((EHttpResponseCodes::Type)HttpResponse->GetResponseCode());
|
|
FString ContentType = HttpResponse->GetContentType();
|
|
FString Content;
|
|
|
|
if (ContentType.IsEmpty())
|
|
{
|
|
return; // Nothing to parse
|
|
}
|
|
else if (ContentType.StartsWith(TEXT("application/json")) || ContentType.StartsWith("text/json"))
|
|
{
|
|
Content = HttpResponse->GetContentAsString();
|
|
|
|
TSharedPtr<FJsonValue> JsonValue;
|
|
auto Reader = TJsonReaderFactory<>::Create(Content);
|
|
|
|
if (FJsonSerializer::Deserialize(Reader, JsonValue) && JsonValue.IsValid())
|
|
{
|
|
if (InOutResponse.FromJson(JsonValue))
|
|
return; // Successfully parsed
|
|
}
|
|
}
|
|
else if(ContentType.StartsWith(TEXT("text/plain")))
|
|
{
|
|
Content = HttpResponse->GetContentAsString();
|
|
InOutResponse.SetResponseString(Content);
|
|
return; // Successfully parsed
|
|
}
|
|
|
|
// Report the parse error but do not mark the request as unsuccessful. Data could be partial or malformed, but the request succeeded.
|
|
UE_LOG(LogOpenAPI, Error, TEXT("Failed to deserialize Http response content (type:%s):\n%s"), *ContentType , *Content);
|
|
return;
|
|
}
|
|
|
|
// By default, assume we failed to establish connection
|
|
InOutResponse.SetHttpResponseCode(EHttpResponseCodes::RequestTimeout);
|
|
}
|
|
|
|
bool OpenAPIUserApi::CreateUser(const CreateUserRequest& Request, const FCreateUserDelegate& Delegate /*= FCreateUserDelegate()*/) const
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
|
|
|
for(const auto& It : AdditionalHeaderParams)
|
|
{
|
|
HttpRequest->SetHeader(It.Key, It.Value);
|
|
}
|
|
|
|
Request.SetupHttpRequest(HttpRequest);
|
|
|
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUserResponse, Delegate, Request.GetAutoRetryCount());
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIUserApi::OnCreateUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUserDelegate Delegate, int AutoRetryCount) const
|
|
{
|
|
CreateUserResponse Response;
|
|
Response.SetHttpRequest(HttpRequest);
|
|
|
|
HandleResponse(HttpResponse, bSucceeded, 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
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
|
|
|
for(const auto& It : AdditionalHeaderParams)
|
|
{
|
|
HttpRequest->SetHeader(It.Key, It.Value);
|
|
}
|
|
|
|
Request.SetupHttpRequest(HttpRequest);
|
|
|
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUsersWithArrayInputResponse, Delegate, Request.GetAutoRetryCount());
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIUserApi::OnCreateUsersWithArrayInputResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUsersWithArrayInputDelegate Delegate, int AutoRetryCount) const
|
|
{
|
|
CreateUsersWithArrayInputResponse Response;
|
|
Response.SetHttpRequest(HttpRequest);
|
|
|
|
HandleResponse(HttpResponse, bSucceeded, 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
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
|
|
|
for(const auto& It : AdditionalHeaderParams)
|
|
{
|
|
HttpRequest->SetHeader(It.Key, It.Value);
|
|
}
|
|
|
|
Request.SetupHttpRequest(HttpRequest);
|
|
|
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnCreateUsersWithListInputResponse, Delegate, Request.GetAutoRetryCount());
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIUserApi::OnCreateUsersWithListInputResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FCreateUsersWithListInputDelegate Delegate, int AutoRetryCount) const
|
|
{
|
|
CreateUsersWithListInputResponse Response;
|
|
Response.SetHttpRequest(HttpRequest);
|
|
|
|
HandleResponse(HttpResponse, bSucceeded, 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
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
|
|
|
for(const auto& It : AdditionalHeaderParams)
|
|
{
|
|
HttpRequest->SetHeader(It.Key, It.Value);
|
|
}
|
|
|
|
Request.SetupHttpRequest(HttpRequest);
|
|
|
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnDeleteUserResponse, Delegate, Request.GetAutoRetryCount());
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIUserApi::OnDeleteUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeleteUserDelegate Delegate, int AutoRetryCount) const
|
|
{
|
|
DeleteUserResponse Response;
|
|
Response.SetHttpRequest(HttpRequest);
|
|
|
|
HandleResponse(HttpResponse, bSucceeded, 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
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
|
|
|
for(const auto& It : AdditionalHeaderParams)
|
|
{
|
|
HttpRequest->SetHeader(It.Key, It.Value);
|
|
}
|
|
|
|
Request.SetupHttpRequest(HttpRequest);
|
|
|
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnGetUserByNameResponse, Delegate, Request.GetAutoRetryCount());
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIUserApi::OnGetUserByNameResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetUserByNameDelegate Delegate, int AutoRetryCount) const
|
|
{
|
|
GetUserByNameResponse Response;
|
|
Response.SetHttpRequest(HttpRequest);
|
|
|
|
HandleResponse(HttpResponse, bSucceeded, 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
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
|
|
|
for(const auto& It : AdditionalHeaderParams)
|
|
{
|
|
HttpRequest->SetHeader(It.Key, It.Value);
|
|
}
|
|
|
|
Request.SetupHttpRequest(HttpRequest);
|
|
|
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnLoginUserResponse, Delegate, Request.GetAutoRetryCount());
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIUserApi::OnLoginUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FLoginUserDelegate Delegate, int AutoRetryCount) const
|
|
{
|
|
LoginUserResponse Response;
|
|
Response.SetHttpRequest(HttpRequest);
|
|
|
|
HandleResponse(HttpResponse, bSucceeded, 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
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
|
|
|
for(const auto& It : AdditionalHeaderParams)
|
|
{
|
|
HttpRequest->SetHeader(It.Key, It.Value);
|
|
}
|
|
|
|
Request.SetupHttpRequest(HttpRequest);
|
|
|
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnLogoutUserResponse, Delegate, Request.GetAutoRetryCount());
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIUserApi::OnLogoutUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FLogoutUserDelegate Delegate, int AutoRetryCount) const
|
|
{
|
|
LogoutUserResponse Response;
|
|
Response.SetHttpRequest(HttpRequest);
|
|
|
|
HandleResponse(HttpResponse, bSucceeded, 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
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
FHttpRequestRef HttpRequest = FHttpModule::Get().CreateRequest();
|
|
HttpRequest->SetURL(*(Url + Request.ComputePath()));
|
|
|
|
for(const auto& It : AdditionalHeaderParams)
|
|
{
|
|
HttpRequest->SetHeader(It.Key, It.Value);
|
|
}
|
|
|
|
Request.SetupHttpRequest(HttpRequest);
|
|
|
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnUpdateUserResponse, Delegate, Request.GetAutoRetryCount());
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIUserApi::OnUpdateUserResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FUpdateUserDelegate Delegate, int AutoRetryCount) const
|
|
{
|
|
UpdateUserResponse Response;
|
|
Response.SetHttpRequest(HttpRequest);
|
|
|
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
|
|
|
if(!Response.IsSuccessful() && AutoRetryCount > 0)
|
|
{
|
|
HttpRequest->OnProcessRequestComplete().BindRaw(this, &OpenAPIUserApi::OnUpdateUserResponse, Delegate, AutoRetryCount - 1);
|
|
Response.AsyncRetry();
|
|
}
|
|
else
|
|
{
|
|
Delegate.ExecuteIfBound(Response);
|
|
}
|
|
}
|
|
|
|
}
|