You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#jira UETOOL-4463 #rb none #preflight 629419761154108e88b6cf20 [CL 20428236 by George Rolfe in ue5-main branch]
308 lines
13 KiB
C++
308 lines
13 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "V2/WebAPISwaggerSchema.h"
|
|
|
|
#include "WebAPIJsonUtilities.h"
|
|
#include "Algo/ForEach.h"
|
|
#include "Dom/JsonObject.h"
|
|
|
|
namespace UE::WebAPI::OpenAPI::V2
|
|
{
|
|
bool FItems::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("type"), Type);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("format"), Format);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("items"), Items);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("collectionFormat"), CollectionFormat);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("default"), Default);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("maximum"), Maximum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("exclusiveMaximum"), ExclusiveMaximum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("minimum"), Minimum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("exclusiveMinimum"), ExclusiveMinimum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("maxLength"), MaxLength);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("minLength"), MinLength);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("pattern"), Pattern);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("minItems"), MinItems);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("maxItems"), MaxItems);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("uniqueItems"), bUniqueItems);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("enum"), Enum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("multipleOf"), MultipleOf);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FExternalDocumentation::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("description"), Description);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("url"), Url);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FXML::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("name"), Name);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("namespace"), Namespace);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("prefix"), Prefix);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("attribute"), Attribute);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("wrapped"), Wrapped);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FSchemaBase::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("name"), Name);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("description"), Description);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("default"), Default);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("maximum"), Maximum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("exclusiveMaximum"), bExclusiveMaximum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("minimum"), Minimum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("exclusiveMinimum"), bExclusiveMinimum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("maxLength"), MaxLength);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("minLength"), MinLength);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("pattern"), Pattern);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("maxItems"), MaxItems);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("minItems"), MinItems);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("uniqueItems"), bUniqueItems);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("required"), bRequired);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("enum"), Enum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("type"), Type);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("items"), Items);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FSchema::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = Super::FromJson(InJson);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("format"), Format);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("title"), Title);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("allOf"), AllOf);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("properties"), Properties);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("additionalProperties"), AdditionalProperties);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("discriminator"), Discriminator);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("readOnly"), bReadOnly);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("xml"), XML);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("externalDocs"), ExternalDocs);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("example"), Example);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FParameter::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = Super::FromJson(InJson);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("in"), In);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("description"), Description);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("format"), Format);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("schema"), Schema);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("multipleOf"), MultipleOf);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FHeader::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("description"), Description);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("type"), Type);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("format"), Format);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("items"), Items);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("collectionFormat"), CollectionFormat);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("default"), Default);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("maximum"), Maximum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("exclusiveMaximum"), bExclusiveMaximum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("minimum"), Minimum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("exclusiveMinimum"), bExclusiveMinimum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("maxLength"), MaxLength);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("minLength"), MinLength);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("pattern"), Pattern);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("maxItems"), MaxItems);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("minItems"), MinItems);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("uniqueItems"), bUniqueItems);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("enum"), Enum);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("multipleOf"), MultipleOf);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FExample::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
const bool bSetAField = false;
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FResponse::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("description"), Description);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("schema"), Schema);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("headers"), Headers);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("examples"), Examples);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FScopes::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
const bool bSetAField = false;
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FSecurityScheme::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("type"), Type);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("description"), Description);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("name"), Name);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("in"), In);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("flow"), Flow);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("authorizationUrl"), AuthorizationUrl);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("tokenUrl"), TokenUrl);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("scopes"), Scopes);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FSecurityRequirement::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
const bool bSetAField = false;
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FTag::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("name"), Name);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("description"), Description);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("externalDocs"), ExternalDocs);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FPath::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("get"), Get);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("put"), Put);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("post"), Post);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("delete"), Delete);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("options"), Options);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("head"), Head);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("patch"), Patch);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("parameters"), Parameters);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FSwagger::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("swagger"), Swagger);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("definitions"), Definitions);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("info"), Info);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("host"), Host);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("basePath"), BasePath);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("schemes"), Schemes);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("consumes"), Consumes);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("produces"), Produces);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("paths"), Paths);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("parameters"), Parameters);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("responses"), Responses);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("securityDefinitions"), SecurityDefinitions);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("security"), Security);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("tags"), Tags);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("externalDocs"), ExternalDocs);
|
|
|
|
Algo::ForEachIf(Definitions.Get({}),
|
|
[](const TPair<FString, TSharedPtr<FSchema>>& KVP)
|
|
{
|
|
return KVP.Value->Name.IsEmpty();
|
|
},
|
|
[](const TPair<FString, TSharedPtr<FSchema>>& KVP)
|
|
{
|
|
KVP.Value->Name = KVP.Key;
|
|
});
|
|
|
|
Algo::ForEachIf(Parameters.Get({}),
|
|
[](const TPair<FString, TSharedPtr<FParameter>>& KVP)
|
|
{
|
|
return KVP.Value->Name.IsEmpty();
|
|
},
|
|
[](const TPair<FString, TSharedPtr<FParameter>>& KVP)
|
|
{
|
|
KVP.Value->Name = KVP.Key;
|
|
});
|
|
|
|
Algo::ForEachIf(Responses.Get({}),
|
|
[](const TPair<FString, TSharedPtr<FResponse>>& KVP)
|
|
{
|
|
return !KVP.Value->Name.IsSet();
|
|
},
|
|
[](const TPair<FString, TSharedPtr<FResponse>>& KVP)
|
|
{
|
|
KVP.Value->Name = KVP.Key;
|
|
});
|
|
|
|
Algo::ForEachIf(SecurityDefinitions.Get({}),
|
|
[](const TPair<FString, TSharedPtr<FSecurityScheme>>& KVP)
|
|
{
|
|
return !KVP.Value->Name.IsSet();
|
|
},
|
|
[](const TPair<FString, TSharedPtr<FSecurityScheme>>& KVP)
|
|
{
|
|
KVP.Value->Name = KVP.Key;
|
|
});
|
|
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FLicense::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("name"), Name);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("url"), URL);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FContact::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("name"), Name);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("url"), URL);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("email"), Email);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FInfo::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("title"), Title);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("description"), Description);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("termsOfService"), TermsOfService);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("contact"), Contact);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("license"), License);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("version"), Version);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FOperation::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("tags"), Tags);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("summary"), Summary);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("description"), Description);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("externalDocs"), ExternalDocs);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("operationId"), OperationId);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("consumes"), Consumes);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("produces"), Produces);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("parameters"), Parameters);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("responses"), Responses);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("schemes"), Schemes);
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("security"), Security);
|
|
return bSetAField;
|
|
}
|
|
|
|
bool FReference::FromJson(const TSharedRef<FJsonObject>& InJson)
|
|
{
|
|
bool bSetAField = false;
|
|
bSetAField |= Json::TryGetField(InJson, TEXT("$ref"), $Ref);
|
|
return bSetAField;
|
|
}
|
|
}
|