forked from loafle/openapi-generator-original
* Added new language: UE4 C++ client * rename generator * add copyright * update doc * fix with Locale.ROOT * add new file * minor improvements * remove postProcessModels Co-authored-by: Samuel Kahn <samuel@kahncode.com>
202 lines
5.9 KiB
C++
202 lines
5.9 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 "OpenAPIStoreApi.h"
|
|
|
|
#include "OpenAPIStoreApiOperations.h"
|
|
#include "OpenAPIModule.h"
|
|
|
|
#include "HttpModule.h"
|
|
#include "Serialization/JsonSerializer.h"
|
|
|
|
namespace OpenAPI
|
|
{
|
|
|
|
OpenAPIStoreApi::OpenAPIStoreApi()
|
|
: Url(TEXT("http://petstore.swagger.io/v2"))
|
|
{
|
|
}
|
|
|
|
OpenAPIStoreApi::~OpenAPIStoreApi() {}
|
|
|
|
void OpenAPIStoreApi::SetURL(const FString& InUrl)
|
|
{
|
|
Url = InUrl;
|
|
}
|
|
|
|
void OpenAPIStoreApi::AddHeaderParam(const FString& Key, const FString& Value)
|
|
{
|
|
AdditionalHeaderParams.Add(Key, Value);
|
|
}
|
|
|
|
void OpenAPIStoreApi::ClearHeaderParams()
|
|
{
|
|
AdditionalHeaderParams.Reset();
|
|
}
|
|
|
|
bool OpenAPIStoreApi::IsValid() const
|
|
{
|
|
if (Url.IsEmpty())
|
|
{
|
|
UE_LOG(LogOpenAPI, Error, TEXT("OpenAPIStoreApi: Endpoint Url is not set, request cannot be performed"));
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void OpenAPIStoreApi::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 == TEXT("application/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 == 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 OpenAPIStoreApi::DeleteOrder(const DeleteOrderRequest& Request, const FDeleteOrderDelegate& Delegate /*= FDeleteOrderDelegate()*/) const
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
TSharedRef<IHttpRequest> 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, &OpenAPIStoreApi::OnDeleteOrderResponse, Delegate);
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIStoreApi::OnDeleteOrderResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FDeleteOrderDelegate Delegate) const
|
|
{
|
|
DeleteOrderResponse Response;
|
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
|
Delegate.ExecuteIfBound(Response);
|
|
}
|
|
|
|
bool OpenAPIStoreApi::GetInventory(const GetInventoryRequest& Request, const FGetInventoryDelegate& Delegate /*= FGetInventoryDelegate()*/) const
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
TSharedRef<IHttpRequest> 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, &OpenAPIStoreApi::OnGetInventoryResponse, Delegate);
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIStoreApi::OnGetInventoryResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetInventoryDelegate Delegate) const
|
|
{
|
|
GetInventoryResponse Response;
|
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
|
Delegate.ExecuteIfBound(Response);
|
|
}
|
|
|
|
bool OpenAPIStoreApi::GetOrderById(const GetOrderByIdRequest& Request, const FGetOrderByIdDelegate& Delegate /*= FGetOrderByIdDelegate()*/) const
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
TSharedRef<IHttpRequest> 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, &OpenAPIStoreApi::OnGetOrderByIdResponse, Delegate);
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIStoreApi::OnGetOrderByIdResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FGetOrderByIdDelegate Delegate) const
|
|
{
|
|
GetOrderByIdResponse Response;
|
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
|
Delegate.ExecuteIfBound(Response);
|
|
}
|
|
|
|
bool OpenAPIStoreApi::PlaceOrder(const PlaceOrderRequest& Request, const FPlaceOrderDelegate& Delegate /*= FPlaceOrderDelegate()*/) const
|
|
{
|
|
if (!IsValid())
|
|
return false;
|
|
|
|
TSharedRef<IHttpRequest> 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, &OpenAPIStoreApi::OnPlaceOrderResponse, Delegate);
|
|
return HttpRequest->ProcessRequest();
|
|
}
|
|
|
|
void OpenAPIStoreApi::OnPlaceOrderResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FPlaceOrderDelegate Delegate) const
|
|
{
|
|
PlaceOrderResponse Response;
|
|
HandleResponse(HttpResponse, bSucceeded, Response);
|
|
Delegate.ExecuteIfBound(Response);
|
|
}
|
|
|
|
}
|