/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
namespace Aws
{
namespace Http
{
class HttpClient;
class HttpClientFactory;
} // namespace Http
namespace Utils
{
template< typename R, typename E> class Outcome;
namespace Threading
{
class Executor;
} // namespace Threading
} // namespace Utils
namespace Auth
{
class AWSCredentials;
class AWSCredentialsProvider;
} // namespace Auth
namespace Client
{
class RetryStrategy;
} // namespace Client
namespace ServerlessApplicationRepository
{
namespace Model
{
class CreateApplicationRequest;
class CreateApplicationVersionRequest;
class CreateCloudFormationChangeSetRequest;
class CreateCloudFormationTemplateRequest;
class DeleteApplicationRequest;
class GetApplicationRequest;
class GetApplicationPolicyRequest;
class GetCloudFormationTemplateRequest;
class ListApplicationDependenciesRequest;
class ListApplicationVersionsRequest;
class ListApplicationsRequest;
class PutApplicationPolicyRequest;
class UnshareApplicationRequest;
class UpdateApplicationRequest;
typedef Aws::Utils::Outcome CreateApplicationOutcome;
typedef Aws::Utils::Outcome CreateApplicationVersionOutcome;
typedef Aws::Utils::Outcome CreateCloudFormationChangeSetOutcome;
typedef Aws::Utils::Outcome CreateCloudFormationTemplateOutcome;
typedef Aws::Utils::Outcome DeleteApplicationOutcome;
typedef Aws::Utils::Outcome GetApplicationOutcome;
typedef Aws::Utils::Outcome GetApplicationPolicyOutcome;
typedef Aws::Utils::Outcome GetCloudFormationTemplateOutcome;
typedef Aws::Utils::Outcome ListApplicationDependenciesOutcome;
typedef Aws::Utils::Outcome ListApplicationVersionsOutcome;
typedef Aws::Utils::Outcome ListApplicationsOutcome;
typedef Aws::Utils::Outcome PutApplicationPolicyOutcome;
typedef Aws::Utils::Outcome UnshareApplicationOutcome;
typedef Aws::Utils::Outcome UpdateApplicationOutcome;
typedef std::future CreateApplicationOutcomeCallable;
typedef std::future CreateApplicationVersionOutcomeCallable;
typedef std::future CreateCloudFormationChangeSetOutcomeCallable;
typedef std::future CreateCloudFormationTemplateOutcomeCallable;
typedef std::future DeleteApplicationOutcomeCallable;
typedef std::future GetApplicationOutcomeCallable;
typedef std::future GetApplicationPolicyOutcomeCallable;
typedef std::future GetCloudFormationTemplateOutcomeCallable;
typedef std::future ListApplicationDependenciesOutcomeCallable;
typedef std::future ListApplicationVersionsOutcomeCallable;
typedef std::future ListApplicationsOutcomeCallable;
typedef std::future PutApplicationPolicyOutcomeCallable;
typedef std::future UnshareApplicationOutcomeCallable;
typedef std::future UpdateApplicationOutcomeCallable;
} // namespace Model
class ServerlessApplicationRepositoryClient;
typedef std::function&) > CreateApplicationResponseReceivedHandler;
typedef std::function&) > CreateApplicationVersionResponseReceivedHandler;
typedef std::function&) > CreateCloudFormationChangeSetResponseReceivedHandler;
typedef std::function&) > CreateCloudFormationTemplateResponseReceivedHandler;
typedef std::function&) > DeleteApplicationResponseReceivedHandler;
typedef std::function&) > GetApplicationResponseReceivedHandler;
typedef std::function&) > GetApplicationPolicyResponseReceivedHandler;
typedef std::function&) > GetCloudFormationTemplateResponseReceivedHandler;
typedef std::function&) > ListApplicationDependenciesResponseReceivedHandler;
typedef std::function&) > ListApplicationVersionsResponseReceivedHandler;
typedef std::function&) > ListApplicationsResponseReceivedHandler;
typedef std::function&) > PutApplicationPolicyResponseReceivedHandler;
typedef std::function&) > UnshareApplicationResponseReceivedHandler;
typedef std::function&) > UpdateApplicationResponseReceivedHandler;
/**
* The AWS Serverless Application Repository makes it easy for developers and
* enterprises to quickly find
and deploy serverless applications in the AWS
* Cloud. For more information about serverless applications,
see Serverless
* Computing and Applications on the AWS website.
The AWS Serverless
* Application Repository is deeply integrated with the AWS Lambda console, so that
* developers of
all levels can get started with serverless computing without
* needing to learn anything new. You can use category
keywords to browse for
* applications such as web and mobile backends, data processing applications, or
* chatbots.
You can also search for applications by name, publisher, or event
* source. To use an application, you simply choose it,
configure any required
* fields, and deploy it with a few clicks.
You can also easily publish
* applications, sharing them publicly with the community at large, or privately
* within your team or across your organization. To publish a serverless
* application (or app), you can use the
AWS Management Console, AWS Command Line
* Interface (AWS CLI), or AWS SDKs to upload the code. Along with the
code, you
* upload a simple manifest file, also known as the AWS Serverless Application
* Model (AWS SAM) template.
For more information about AWS SAM, see AWS
* Serverless Application Model (AWS SAM) on the AWS Labs
GitHub
* repository.
The AWS Serverless Application Repository Developer Guide
* contains more information about the two developer
experiences
* available:
-
Consuming Applications – Browse for applications
* and view information about them, including
source code and readme files. Also
* install, configure, and deploy applications of your choosing.
* Publishing Applications – Configure and upload applications to make them
* available to other
developers, and publish new versions of applications.
*
*/
class AWS_SERVERLESSAPPLICATIONREPOSITORY_API ServerlessApplicationRepositoryClient : public Aws::Client::AWSJsonClient
{
public:
typedef Aws::Client::AWSJsonClient BASECLASS;
/**
* Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
ServerlessApplicationRepositoryClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
/**
* Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
ServerlessApplicationRepositoryClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
/**
* Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
* the default http client factory will be used
*/
ServerlessApplicationRepositoryClient(const std::shared_ptr& credentialsProvider,
const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
virtual ~ServerlessApplicationRepositoryClient();
/**
* Creates an application, optionally including an AWS SAM file to create the
* first application version in the same call.
See Also:
AWS
* API Reference
*/
virtual Model::CreateApplicationOutcome CreateApplication(const Model::CreateApplicationRequest& request) const;
/**
* Creates an application, optionally including an AWS SAM file to create the
* first application version in the same call.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::CreateApplicationOutcomeCallable CreateApplicationCallable(const Model::CreateApplicationRequest& request) const;
/**
* Creates an application, optionally including an AWS SAM file to create the
* first application version in the same call.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void CreateApplicationAsync(const Model::CreateApplicationRequest& request, const CreateApplicationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Creates an application version.
See Also:
AWS
* API Reference
*/
virtual Model::CreateApplicationVersionOutcome CreateApplicationVersion(const Model::CreateApplicationVersionRequest& request) const;
/**
* Creates an application version.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::CreateApplicationVersionOutcomeCallable CreateApplicationVersionCallable(const Model::CreateApplicationVersionRequest& request) const;
/**
* Creates an application version.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void CreateApplicationVersionAsync(const Model::CreateApplicationVersionRequest& request, const CreateApplicationVersionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Creates an AWS CloudFormation change set for the given
* application.
See Also:
AWS
* API Reference
*/
virtual Model::CreateCloudFormationChangeSetOutcome CreateCloudFormationChangeSet(const Model::CreateCloudFormationChangeSetRequest& request) const;
/**
* Creates an AWS CloudFormation change set for the given
* application.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::CreateCloudFormationChangeSetOutcomeCallable CreateCloudFormationChangeSetCallable(const Model::CreateCloudFormationChangeSetRequest& request) const;
/**
* Creates an AWS CloudFormation change set for the given
* application.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void CreateCloudFormationChangeSetAsync(const Model::CreateCloudFormationChangeSetRequest& request, const CreateCloudFormationChangeSetResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Creates an AWS CloudFormation template.
See Also:
AWS
* API Reference
*/
virtual Model::CreateCloudFormationTemplateOutcome CreateCloudFormationTemplate(const Model::CreateCloudFormationTemplateRequest& request) const;
/**
* Creates an AWS CloudFormation template.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::CreateCloudFormationTemplateOutcomeCallable CreateCloudFormationTemplateCallable(const Model::CreateCloudFormationTemplateRequest& request) const;
/**
* Creates an AWS CloudFormation template.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void CreateCloudFormationTemplateAsync(const Model::CreateCloudFormationTemplateRequest& request, const CreateCloudFormationTemplateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Deletes the specified application.
See Also:
AWS
* API Reference
*/
virtual Model::DeleteApplicationOutcome DeleteApplication(const Model::DeleteApplicationRequest& request) const;
/**
* Deletes the specified application.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::DeleteApplicationOutcomeCallable DeleteApplicationCallable(const Model::DeleteApplicationRequest& request) const;
/**
* Deletes the specified application.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void DeleteApplicationAsync(const Model::DeleteApplicationRequest& request, const DeleteApplicationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Gets the specified application.
See Also:
AWS
* API Reference
*/
virtual Model::GetApplicationOutcome GetApplication(const Model::GetApplicationRequest& request) const;
/**
* Gets the specified application.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::GetApplicationOutcomeCallable GetApplicationCallable(const Model::GetApplicationRequest& request) const;
/**
* Gets the specified application.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void GetApplicationAsync(const Model::GetApplicationRequest& request, const GetApplicationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Retrieves the policy for the application.
See Also:
AWS
* API Reference
*/
virtual Model::GetApplicationPolicyOutcome GetApplicationPolicy(const Model::GetApplicationPolicyRequest& request) const;
/**
* Retrieves the policy for the application.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::GetApplicationPolicyOutcomeCallable GetApplicationPolicyCallable(const Model::GetApplicationPolicyRequest& request) const;
/**
* Retrieves the policy for the application.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void GetApplicationPolicyAsync(const Model::GetApplicationPolicyRequest& request, const GetApplicationPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Gets the specified AWS CloudFormation template.
See Also:
AWS
* API Reference
*/
virtual Model::GetCloudFormationTemplateOutcome GetCloudFormationTemplate(const Model::GetCloudFormationTemplateRequest& request) const;
/**
* Gets the specified AWS CloudFormation template.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::GetCloudFormationTemplateOutcomeCallable GetCloudFormationTemplateCallable(const Model::GetCloudFormationTemplateRequest& request) const;
/**
* Gets the specified AWS CloudFormation template.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void GetCloudFormationTemplateAsync(const Model::GetCloudFormationTemplateRequest& request, const GetCloudFormationTemplateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Retrieves the list of applications nested in the containing
* application.
See Also:
AWS
* API Reference
*/
virtual Model::ListApplicationDependenciesOutcome ListApplicationDependencies(const Model::ListApplicationDependenciesRequest& request) const;
/**
* Retrieves the list of applications nested in the containing
* application.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::ListApplicationDependenciesOutcomeCallable ListApplicationDependenciesCallable(const Model::ListApplicationDependenciesRequest& request) const;
/**
* Retrieves the list of applications nested in the containing
* application.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void ListApplicationDependenciesAsync(const Model::ListApplicationDependenciesRequest& request, const ListApplicationDependenciesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Lists versions for the specified application.
See Also:
AWS
* API Reference
*/
virtual Model::ListApplicationVersionsOutcome ListApplicationVersions(const Model::ListApplicationVersionsRequest& request) const;
/**
* Lists versions for the specified application.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::ListApplicationVersionsOutcomeCallable ListApplicationVersionsCallable(const Model::ListApplicationVersionsRequest& request) const;
/**
* Lists versions for the specified application.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void ListApplicationVersionsAsync(const Model::ListApplicationVersionsRequest& request, const ListApplicationVersionsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Lists applications owned by the requester.
See Also:
AWS
* API Reference
*/
virtual Model::ListApplicationsOutcome ListApplications(const Model::ListApplicationsRequest& request) const;
/**
* Lists applications owned by the requester.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::ListApplicationsOutcomeCallable ListApplicationsCallable(const Model::ListApplicationsRequest& request) const;
/**
* Lists applications owned by the requester.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void ListApplicationsAsync(const Model::ListApplicationsRequest& request, const ListApplicationsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Sets the permission policy for an application. For the list of actions
* supported for this operation, see
Application
*
Permissions
.
See Also:
AWS
* API Reference
*/
virtual Model::PutApplicationPolicyOutcome PutApplicationPolicy(const Model::PutApplicationPolicyRequest& request) const;
/**
* Sets the permission policy for an application. For the list of actions
* supported for this operation, see
Application
*
Permissions
.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::PutApplicationPolicyOutcomeCallable PutApplicationPolicyCallable(const Model::PutApplicationPolicyRequest& request) const;
/**
* Sets the permission policy for an application. For the list of actions
* supported for this operation, see
Application
*
Permissions
.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void PutApplicationPolicyAsync(const Model::PutApplicationPolicyRequest& request, const PutApplicationPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Unshares an application from an AWS Organization.
This operation can be
* called only from the organization's master account.
See Also:
* AWS
* API Reference
*/
virtual Model::UnshareApplicationOutcome UnshareApplication(const Model::UnshareApplicationRequest& request) const;
/**
* Unshares an application from an AWS Organization.
This operation can be
* called only from the organization's master account.
See Also:
* AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::UnshareApplicationOutcomeCallable UnshareApplicationCallable(const Model::UnshareApplicationRequest& request) const;
/**
* Unshares an application from an AWS Organization.
This operation can be
* called only from the organization's master account.
See Also:
* AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void UnshareApplicationAsync(const Model::UnshareApplicationRequest& request, const UnshareApplicationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
/**
* Updates the specified application.
See Also:
AWS
* API Reference
*/
virtual Model::UpdateApplicationOutcome UpdateApplication(const Model::UpdateApplicationRequest& request) const;
/**
* Updates the specified application.
See Also:
AWS
* API Reference
*
* returns a future to the operation so that it can be executed in parallel to other requests.
*/
virtual Model::UpdateApplicationOutcomeCallable UpdateApplicationCallable(const Model::UpdateApplicationRequest& request) const;
/**
* Updates the specified application.
See Also:
AWS
* API Reference
*
* Queues the request into a thread executor and triggers associated callback when operation has finished.
*/
virtual void UpdateApplicationAsync(const Model::UpdateApplicationRequest& request, const UpdateApplicationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const;
void OverrideEndpoint(const Aws::String& endpoint);
private:
void init(const Aws::Client::ClientConfiguration& clientConfiguration);
void CreateApplicationAsyncHelper(const Model::CreateApplicationRequest& request, const CreateApplicationResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void CreateApplicationVersionAsyncHelper(const Model::CreateApplicationVersionRequest& request, const CreateApplicationVersionResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void CreateCloudFormationChangeSetAsyncHelper(const Model::CreateCloudFormationChangeSetRequest& request, const CreateCloudFormationChangeSetResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void CreateCloudFormationTemplateAsyncHelper(const Model::CreateCloudFormationTemplateRequest& request, const CreateCloudFormationTemplateResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void DeleteApplicationAsyncHelper(const Model::DeleteApplicationRequest& request, const DeleteApplicationResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void GetApplicationAsyncHelper(const Model::GetApplicationRequest& request, const GetApplicationResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void GetApplicationPolicyAsyncHelper(const Model::GetApplicationPolicyRequest& request, const GetApplicationPolicyResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void GetCloudFormationTemplateAsyncHelper(const Model::GetCloudFormationTemplateRequest& request, const GetCloudFormationTemplateResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void ListApplicationDependenciesAsyncHelper(const Model::ListApplicationDependenciesRequest& request, const ListApplicationDependenciesResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void ListApplicationVersionsAsyncHelper(const Model::ListApplicationVersionsRequest& request, const ListApplicationVersionsResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void ListApplicationsAsyncHelper(const Model::ListApplicationsRequest& request, const ListApplicationsResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void PutApplicationPolicyAsyncHelper(const Model::PutApplicationPolicyRequest& request, const PutApplicationPolicyResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void UnshareApplicationAsyncHelper(const Model::UnshareApplicationRequest& request, const UnshareApplicationResponseReceivedHandler& handler, const std::shared_ptr& context) const;
void UpdateApplicationAsyncHelper(const Model::UpdateApplicationRequest& request, const UpdateApplicationResponseReceivedHandler& handler, const std::shared_ptr& context) const;
Aws::String m_uri;
Aws::String m_configScheme;
std::shared_ptr m_executor;
};
} // namespace ServerlessApplicationRepository
} // namespace Aws