/* * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or * its licensors. * * For complete copyright and license terms please see the LICENSE at the root of this * distribution (the "License"). All use of this software is governed by the License, * or, if provided, by the license below or the license accompanying this file. Do not * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * */ ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // THIS CODE IS AUTOGENERATED, DO NOT MODIFY ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// #pragma once #include #include #include #include #include #include #include #include #include #include #include #if defined (PLATFORM_SUPPORTS_AWS_NATIVE_SDK) // The AWS Native SDK AWSAllocator triggers a warning due to accessing members of std::allocator directly. // AWSAllocator.h(70): warning C4996: 'std::allocator::pointer': warning STL4010: Various members of std::allocator are deprecated in C++17. // Use std::allocator_traits instead of accessing these members directly. // You can define _SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING or _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS to acknowledge that you have received this warning. AZ_PUSH_DISABLE_WARNING(4251 4996, "-Wunknown-warning-option") #include #include AZ_POP_DISABLE_WARNING #endif // (PLATFORM_SUPPORTS_AWS_NATIVE_SDK) #include namespace CloudGemDynamicContent { namespace ServiceAPI { extern const char* LmbrAWS_CodeGen_Component_UUID; extern const char* LmbrAWS_CodeGen_NotificationBus1_UUID; extern const char* LmbrAWS_CodeGen_RequestBus1_UUID; extern const char* LmbrAWS_CodeGen_ResponseHandler_UUID; extern const char* LmbrAWS_CodeGen_ServiceStatus_UUID; extern const char* LmbrAWS_CodeGen_PortalFileInfo_UUID; extern const char* LmbrAWS_CodeGen_PortalFileRequest_UUID; extern const char* LmbrAWS_CodeGen_PortalFileRequestList_UUID; extern const char* LmbrAWS_CodeGen_PortalFileListResults_UUID; extern const char* LmbrAWS_CodeGen_RequestDataItem_UUID; extern const char* LmbrAWS_CodeGen_RequestData_UUID; extern const char* LmbrAWS_CodeGen_FileRequestResult_UUID; extern const char* LmbrAWS_CodeGen_FileRequestResults_UUID; // redefs bool WriteJson(CloudGemFramework::JsonWriter& writer, const int& item); bool WriteJson(CloudGemFramework::JsonWriter& writer, const AZStd::string& item); bool WriteJson(CloudGemFramework::JsonWriter& writer, const double& item); struct ServiceStatus { AZ_TYPE_INFO(ServiceStatus, LmbrAWS_CodeGen_ServiceStatus_UUID) AZ_CLASS_ALLOCATOR(ServiceStatus, AZ::SystemAllocator, 0) AZStd::string status; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const ServiceStatus& item); struct PortalFileInfo { AZ_TYPE_INFO(PortalFileInfo, LmbrAWS_CodeGen_PortalFileInfo_UUID) AZ_CLASS_ALLOCATOR(PortalFileInfo, AZ::SystemAllocator, 0) AZStd::string FileName; AZStd::string StagingStatus; AZStd::string StagingStart; AZStd::string StagingEnd; AZStd::string Parent; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const PortalFileInfo& item); struct PortalFileRequest { AZ_TYPE_INFO(PortalFileRequest, LmbrAWS_CodeGen_PortalFileRequest_UUID) AZ_CLASS_ALLOCATOR(PortalFileRequest, AZ::SystemAllocator, 0) AZStd::string FileName; AZStd::string StagingStatus; AZStd::string StagingStart; AZStd::string StagingEnd; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const PortalFileRequest& item); using PortalFileRequestListPropertyFileList = AZStd::vector; bool WriteJson(CloudGemFramework::JsonWriter& writer, const PortalFileRequestListPropertyFileList& list); struct PortalFileRequestList { AZ_TYPE_INFO(PortalFileRequestList, LmbrAWS_CodeGen_PortalFileRequestList_UUID) AZ_CLASS_ALLOCATOR(PortalFileRequestList, AZ::SystemAllocator, 0) PortalFileRequestListPropertyFileList FileList; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const PortalFileRequestList& item); using PortalFileListResultsPropertyResults = AZStd::vector; bool WriteJson(CloudGemFramework::JsonWriter& writer, const PortalFileListResultsPropertyResults& list); struct PortalFileListResults { AZ_TYPE_INFO(PortalFileListResults, LmbrAWS_CodeGen_PortalFileListResults_UUID) AZ_CLASS_ALLOCATOR(PortalFileListResults, AZ::SystemAllocator, 0) PortalFileListResultsPropertyResults results; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const PortalFileListResults& item); struct RequestDataItem { AZ_TYPE_INFO(RequestDataItem, LmbrAWS_CodeGen_RequestDataItem_UUID) AZ_CLASS_ALLOCATOR(RequestDataItem, AZ::SystemAllocator, 0) AZStd::string FileName; AZStd::string FileVersion; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const RequestDataItem& item); using RequestDataPropertyFileList = AZStd::vector; bool WriteJson(CloudGemFramework::JsonWriter& writer, const RequestDataPropertyFileList& list); struct RequestData { AZ_TYPE_INFO(RequestData, LmbrAWS_CodeGen_RequestData_UUID) AZ_CLASS_ALLOCATOR(RequestData, AZ::SystemAllocator, 0) RequestDataPropertyFileList FileList; bool ManifestData{false}; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const RequestData& item); struct FileRequestResult { AZ_TYPE_INFO(FileRequestResult, LmbrAWS_CodeGen_FileRequestResult_UUID) AZ_CLASS_ALLOCATOR(FileRequestResult, AZ::SystemAllocator, 0) AZStd::string FileName; AZStd::string FileStatus; AZStd::string PresignedURL; AZStd::string Signature; AZStd::string Size; AZStd::string Hash; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const FileRequestResult& item); using FileRequestResultArray = AZStd::vector; bool WriteJson(CloudGemFramework::JsonWriter& writer, const FileRequestResultArray& list); struct FileRequestResults { AZ_TYPE_INFO(FileRequestResults, LmbrAWS_CodeGen_FileRequestResults_UUID) AZ_CLASS_ALLOCATOR(FileRequestResults, AZ::SystemAllocator, 0) FileRequestResultArray ResultList; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const FileRequestResults& item); // Service RequestJobs CLOUD_GEM_SERVICE(CloudGemDynamicContent); class GetServiceStatusRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemDynamicContent, HttpMethod::HTTP_GET, "/service/status"); struct Parameters { bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; ServiceStatus result; Parameters parameters; }; using GetServiceStatusRequestJob = CloudGemFramework::ServiceRequestJob; class GetPortalInfoRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemDynamicContent, HttpMethod::HTTP_GET, "/portal/info/{file_name}"); struct Parameters { AZStd::string file_name; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; PortalFileInfo result; Parameters parameters; }; using GetPortalInfoRequestJob = CloudGemFramework::ServiceRequestJob; class DeletePortalInfoRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemDynamicContent, HttpMethod::HTTP_DELETE, "/portal/info/{file_name}"); struct Parameters { AZStd::string file_name; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; PortalFileRequestList result; Parameters parameters; }; using DeletePortalInfoRequestJob = CloudGemFramework::ServiceRequestJob; class GetPortalContentRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemDynamicContent, HttpMethod::HTTP_GET, "/portal/content"); struct Parameters { bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; PortalFileListResults result; Parameters parameters; }; using GetPortalContentRequestJob = CloudGemFramework::ServiceRequestJob; class DeletePortalContentRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemDynamicContent, HttpMethod::HTTP_DELETE, "/portal/content"); struct Parameters { bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; PortalFileRequestList result; Parameters parameters; }; using DeletePortalContentRequestJob = CloudGemFramework::ServiceRequestJob; class PostPortalContentRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemDynamicContent, HttpMethod::HTTP_POST, "/portal/content"); struct Parameters { PortalFileRequestList request_content; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; PortalFileListResults result; Parameters parameters; }; using PostPortalContentRequestJob = CloudGemFramework::ServiceRequestJob; class PostClientContentRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemDynamicContent, HttpMethod::HTTP_POST, "/client/content"); struct Parameters { RequestData request_content; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; FileRequestResults result; Parameters parameters; }; using PostClientContentRequestJob = CloudGemFramework::ServiceRequestJob; // Notification bus for this component class CloudGemDynamicContentNotifications : public AZ::ComponentBus { public: /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnGetServiceStatusRequestSuccess(const ServiceStatus response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnGetServiceStatusRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnGetPortalInfoRequestSuccess(const PortalFileInfo response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnGetPortalInfoRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnDeletePortalInfoRequestSuccess(const PortalFileRequestList response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnDeletePortalInfoRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnGetPortalContentRequestSuccess(const PortalFileListResults response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnGetPortalContentRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnDeletePortalContentRequestSuccess(const PortalFileRequestList response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnDeletePortalContentRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnPostPortalContentRequestSuccess(const PortalFileListResults response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnPostPortalContentRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnPostClientContentRequestSuccess(const FileRequestResults response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnPostClientContentRequestError(const CloudGemFramework::Error error); }; using CloudGemDynamicContentNotificationBus = AZ::EBus; class BehaviorCloudGemDynamicContentNotificationBusHandler : public CloudGemDynamicContentNotificationBus::Handler, public AZ::BehaviorEBusHandler { public: AZ_EBUS_BEHAVIOR_BINDER(BehaviorCloudGemDynamicContentNotificationBusHandler, LmbrAWS_CodeGen_NotificationBus1_UUID, AZ::SystemAllocator , OnGetServiceStatusRequestSuccess , OnGetServiceStatusRequestError , OnGetPortalInfoRequestSuccess , OnGetPortalInfoRequestError , OnDeletePortalInfoRequestSuccess , OnDeletePortalInfoRequestError , OnGetPortalContentRequestSuccess , OnGetPortalContentRequestError , OnDeletePortalContentRequestSuccess , OnDeletePortalContentRequestError , OnPostPortalContentRequestSuccess , OnPostPortalContentRequestError , OnPostClientContentRequestSuccess , OnPostClientContentRequestError ); void OnGetServiceStatusRequestSuccess(const ServiceStatus response) override; void OnGetServiceStatusRequestError(const CloudGemFramework::Error error) override; void OnGetPortalInfoRequestSuccess(const PortalFileInfo response) override; void OnGetPortalInfoRequestError(const CloudGemFramework::Error error) override; void OnDeletePortalInfoRequestSuccess(const PortalFileRequestList response) override; void OnDeletePortalInfoRequestError(const CloudGemFramework::Error error) override; void OnGetPortalContentRequestSuccess(const PortalFileListResults response) override; void OnGetPortalContentRequestError(const CloudGemFramework::Error error) override; void OnDeletePortalContentRequestSuccess(const PortalFileRequestList response) override; void OnDeletePortalContentRequestError(const CloudGemFramework::Error error) override; void OnPostPortalContentRequestSuccess(const PortalFileListResults response) override; void OnPostPortalContentRequestError(const CloudGemFramework::Error error) override; void OnPostClientContentRequestSuccess(const FileRequestResults response) override; void OnPostClientContentRequestError(const CloudGemFramework::Error error) override; }; class CloudGemDynamicContentResponseHandler; // Request bus for this component class CloudGemDynamicContentRequests : public AZ::ComponentBus { public: virtual ~CloudGemDynamicContentRequests() {} virtual void GetServiceStatus(CloudGemDynamicContentResponseHandler* responseHandler); virtual void GetPortalInfo(const AZStd::string& file_name, CloudGemDynamicContentResponseHandler* responseHandler); virtual void DeletePortalInfo(const AZStd::string& file_name, CloudGemDynamicContentResponseHandler* responseHandler); virtual void GetPortalContent(CloudGemDynamicContentResponseHandler* responseHandler); virtual void DeletePortalContent(CloudGemDynamicContentResponseHandler* responseHandler); virtual void PostPortalContent(const PortalFileRequestList& request_content, CloudGemDynamicContentResponseHandler* responseHandler); virtual void PostClientContent(const RequestData& request_content, CloudGemDynamicContentResponseHandler* responseHandler); }; using CloudGemDynamicContentRequestBus = AZ::EBus; // This class is used as a parameter for all requests and throws the response on the CloudGemDynamicContentNotificationBus // Inherit from this to define custom behavior. class CloudGemDynamicContentResponseHandler { public: AZ_TYPE_INFO(CloudGemDynamicContentResponseHandler, LmbrAWS_CodeGen_ResponseHandler_UUID) AZ_CLASS_ALLOCATOR(CloudGemDynamicContentResponseHandler, AZ::SystemAllocator, 0) virtual ~CloudGemDynamicContentResponseHandler() {} virtual void HandleGetServiceStatusSuccess(GetServiceStatusRequestJob* job, AZ::EntityId entityId); virtual void HandleGetServiceStatusError(GetServiceStatusRequestJob* job, AZ::EntityId entityId); virtual void HandleGetPortalInfoSuccess(GetPortalInfoRequestJob* job, AZ::EntityId entityId); virtual void HandleGetPortalInfoError(GetPortalInfoRequestJob* job, AZ::EntityId entityId); virtual void HandleDeletePortalInfoSuccess(DeletePortalInfoRequestJob* job, AZ::EntityId entityId); virtual void HandleDeletePortalInfoError(DeletePortalInfoRequestJob* job, AZ::EntityId entityId); virtual void HandleGetPortalContentSuccess(GetPortalContentRequestJob* job, AZ::EntityId entityId); virtual void HandleGetPortalContentError(GetPortalContentRequestJob* job, AZ::EntityId entityId); virtual void HandleDeletePortalContentSuccess(DeletePortalContentRequestJob* job, AZ::EntityId entityId); virtual void HandleDeletePortalContentError(DeletePortalContentRequestJob* job, AZ::EntityId entityId); virtual void HandlePostPortalContentSuccess(PostPortalContentRequestJob* job, AZ::EntityId entityId); virtual void HandlePostPortalContentError(PostPortalContentRequestJob* job, AZ::EntityId entityId); virtual void HandlePostClientContentSuccess(PostClientContentRequestJob* job, AZ::EntityId entityId); virtual void HandlePostClientContentError(PostClientContentRequestJob* job, AZ::EntityId entityId); }; class CloudGemDynamicContentClientComponent : public AZ::Component , public CloudGemDynamicContentRequestBus::Handler { public: AZ_COMPONENT(CloudGemDynamicContentClientComponent, LmbrAWS_CodeGen_Component_UUID); virtual ~CloudGemDynamicContentClientComponent() = default; AZStd::shared_ptr m_defaultResponseHandler; void Init() override; void Activate() override; void Deactivate() override; static void Reflect(AZ::ReflectContext* reflection) { ServiceStatus::Reflect(reflection); PortalFileInfo::Reflect(reflection); PortalFileRequest::Reflect(reflection); PortalFileRequestList::Reflect(reflection); PortalFileListResults::Reflect(reflection); RequestDataItem::Reflect(reflection); RequestData::Reflect(reflection); FileRequestResult::Reflect(reflection); FileRequestResults::Reflect(reflection); AZ::SerializeContext* serializeContext = azrtti_cast(reflection); if (serializeContext) { // we must include any fields we want to expose to the editor or lua in the serialize context serializeContext->Class() ->Version(1); AZ::EditContext* editContext = serializeContext->GetEditContext(); if (editContext) { editContext->Class("CloudGemDynamicContentClientComponent", "CloudGemDynamicContent Component") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::Category, "Cloud Canvas Gems") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game")); } } AZ::BehaviorContext* behaviorContext = azrtti_cast(reflection); if (behaviorContext) { behaviorContext->EBus("CloudGemDynamicContentRequestBus") // one of these for each function ->Event("GetServiceStatus", &CloudGemDynamicContentRequestBus::Events::GetServiceStatus) ->Event("GetPortalInfo", &CloudGemDynamicContentRequestBus::Events::GetPortalInfo) ->Event("DeletePortalInfo", &CloudGemDynamicContentRequestBus::Events::DeletePortalInfo) ->Event("GetPortalContent", &CloudGemDynamicContentRequestBus::Events::GetPortalContent) ->Event("DeletePortalContent", &CloudGemDynamicContentRequestBus::Events::DeletePortalContent) ->Event("PostPortalContent", &CloudGemDynamicContentRequestBus::Events::PostPortalContent) ->Event("PostClientContent", &CloudGemDynamicContentRequestBus::Events::PostClientContent) ; behaviorContext->EBus("CloudGemDynamicContentNotificationBus") ->Handler() ; } } // Functions from the swagger definitions void GetServiceStatus(CloudGemDynamicContentResponseHandler* responseHandler) override; void GetPortalInfo(const AZStd::string& file_name, CloudGemDynamicContentResponseHandler* responseHandler) override; void DeletePortalInfo(const AZStd::string& file_name, CloudGemDynamicContentResponseHandler* responseHandler) override; void GetPortalContent(CloudGemDynamicContentResponseHandler* responseHandler) override; void DeletePortalContent(CloudGemDynamicContentResponseHandler* responseHandler) override; void PostPortalContent(const PortalFileRequestList& request_content, CloudGemDynamicContentResponseHandler* responseHandler) override; void PostClientContent(const RequestData& request_content, CloudGemDynamicContentResponseHandler* responseHandler) override; }; } // ServiceAPI } // CloudGemDynamicContent