/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include
#include
#include
#include
#include
#include
namespace Aws
{
namespace S3Outposts
{
/**
* Amazon S3 on Outposts provides access to S3 on Outposts operations.
*/
class AWS_S3OUTPOSTS_API S3OutpostsClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods
{
public:
typedef Aws::Client::AWSJsonClient BASECLASS;
static const char* SERVICE_NAME;
static const char* ALLOCATION_TAG;
typedef S3OutpostsClientConfiguration ClientConfigurationType;
typedef S3OutpostsEndpointProvider EndpointProviderType;
/**
* 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.
*/
S3OutpostsClient(const Aws::S3Outposts::S3OutpostsClientConfiguration& clientConfiguration = Aws::S3Outposts::S3OutpostsClientConfiguration(),
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG));
/**
* 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.
*/
S3OutpostsClient(const Aws::Auth::AWSCredentials& credentials,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::S3Outposts::S3OutpostsClientConfiguration& clientConfiguration = Aws::S3Outposts::S3OutpostsClientConfiguration());
/**
* 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
*/
S3OutpostsClient(const std::shared_ptr& credentialsProvider,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::S3Outposts::S3OutpostsClientConfiguration& clientConfiguration = Aws::S3Outposts::S3OutpostsClientConfiguration());
/* Legacy constructors due deprecation */
/**
* 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.
*/
S3OutpostsClient(const Aws::Client::ClientConfiguration& 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.
*/
S3OutpostsClient(const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& 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
*/
S3OutpostsClient(const std::shared_ptr& credentialsProvider,
const Aws::Client::ClientConfiguration& clientConfiguration);
/* End of legacy constructors due deprecation */
virtual ~S3OutpostsClient();
/**
* Creates an endpoint and associates it with the specified Outpost.
* It can take up to 5 minutes for this action to finish.
* Related actions include:
See Also:
AWS
* API Reference
*/
virtual Model::CreateEndpointOutcome CreateEndpoint(const Model::CreateEndpointRequest& request) const;
/**
* A Callable wrapper for CreateEndpoint that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::CreateEndpointOutcomeCallable CreateEndpointCallable(const CreateEndpointRequestT& request) const
{
return SubmitCallable(&S3OutpostsClient::CreateEndpoint, request);
}
/**
* An Async wrapper for CreateEndpoint that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void CreateEndpointAsync(const CreateEndpointRequestT& request, const CreateEndpointResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&S3OutpostsClient::CreateEndpoint, request, handler, context);
}
/**
* Deletes an endpoint.
It can take up to 5 minutes for this
* action to finish.
Related actions include:
See Also:
AWS
* API Reference
*/
virtual Model::DeleteEndpointOutcome DeleteEndpoint(const Model::DeleteEndpointRequest& request) const;
/**
* A Callable wrapper for DeleteEndpoint that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::DeleteEndpointOutcomeCallable DeleteEndpointCallable(const DeleteEndpointRequestT& request) const
{
return SubmitCallable(&S3OutpostsClient::DeleteEndpoint, request);
}
/**
* An Async wrapper for DeleteEndpoint that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void DeleteEndpointAsync(const DeleteEndpointRequestT& request, const DeleteEndpointResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&S3OutpostsClient::DeleteEndpoint, request, handler, context);
}
/**
* Lists endpoints associated with the specified Outpost.
Related
* actions include:
See Also:
AWS
* API Reference
*/
virtual Model::ListEndpointsOutcome ListEndpoints(const Model::ListEndpointsRequest& request) const;
/**
* A Callable wrapper for ListEndpoints that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListEndpointsOutcomeCallable ListEndpointsCallable(const ListEndpointsRequestT& request) const
{
return SubmitCallable(&S3OutpostsClient::ListEndpoints, request);
}
/**
* An Async wrapper for ListEndpoints that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListEndpointsAsync(const ListEndpointsRequestT& request, const ListEndpointsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&S3OutpostsClient::ListEndpoints, request, handler, context);
}
/**
* Lists the Outposts with S3 on Outposts capacity for your Amazon Web Services
* account. Includes S3 on Outposts that you have access to as the Outposts owner,
* or as a shared user from Resource Access Manager (RAM).
See
* Also:
AWS
* API Reference
*/
virtual Model::ListOutpostsWithS3Outcome ListOutpostsWithS3(const Model::ListOutpostsWithS3Request& request) const;
/**
* A Callable wrapper for ListOutpostsWithS3 that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListOutpostsWithS3OutcomeCallable ListOutpostsWithS3Callable(const ListOutpostsWithS3RequestT& request) const
{
return SubmitCallable(&S3OutpostsClient::ListOutpostsWithS3, request);
}
/**
* An Async wrapper for ListOutpostsWithS3 that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListOutpostsWithS3Async(const ListOutpostsWithS3RequestT& request, const ListOutpostsWithS3ResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&S3OutpostsClient::ListOutpostsWithS3, request, handler, context);
}
/**
* Lists all endpoints associated with an Outpost that has been shared by Amazon
* Web Services Resource Access Manager (RAM).
Related actions include:
* See Also:
AWS
* API Reference
*/
virtual Model::ListSharedEndpointsOutcome ListSharedEndpoints(const Model::ListSharedEndpointsRequest& request) const;
/**
* A Callable wrapper for ListSharedEndpoints that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListSharedEndpointsOutcomeCallable ListSharedEndpointsCallable(const ListSharedEndpointsRequestT& request) const
{
return SubmitCallable(&S3OutpostsClient::ListSharedEndpoints, request);
}
/**
* An Async wrapper for ListSharedEndpoints that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListSharedEndpointsAsync(const ListSharedEndpointsRequestT& request, const ListSharedEndpointsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&S3OutpostsClient::ListSharedEndpoints, request, handler, context);
}
void OverrideEndpoint(const Aws::String& endpoint);
std::shared_ptr& accessEndpointProvider();
private:
friend class Aws::Client::ClientWithAsyncTemplateMethods;
void init(const S3OutpostsClientConfiguration& clientConfiguration);
S3OutpostsClientConfiguration m_clientConfiguration;
std::shared_ptr m_executor;
std::shared_ptr m_endpointProvider;
};
} // namespace S3Outposts
} // namespace Aws