/**
* 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 ApplicationCostProfiler
{
/**
* This reference provides descriptions of the AWS Application Cost Profiler
* API.
The AWS Application Cost Profiler API provides programmatic access
* to view, create, update, and delete application cost report definitions, as well
* as to import your usage data into the Application Cost Profiler service.
* For more information about using this service, see the AWS
* Application Cost Profiler User Guide.
*/
class AWS_APPLICATIONCOSTPROFILER_API ApplicationCostProfilerClient : 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 ApplicationCostProfilerClientConfiguration ClientConfigurationType;
typedef ApplicationCostProfilerEndpointProvider 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.
*/
ApplicationCostProfilerClient(const Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration& clientConfiguration = Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration(),
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.
*/
ApplicationCostProfilerClient(const Aws::Auth::AWSCredentials& credentials,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration& clientConfiguration = Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration());
/**
* 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
*/
ApplicationCostProfilerClient(const std::shared_ptr& credentialsProvider,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration& clientConfiguration = Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration());
/* 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.
*/
ApplicationCostProfilerClient(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.
*/
ApplicationCostProfilerClient(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
*/
ApplicationCostProfilerClient(const std::shared_ptr& credentialsProvider,
const Aws::Client::ClientConfiguration& clientConfiguration);
/* End of legacy constructors due deprecation */
virtual ~ApplicationCostProfilerClient();
/**
* Deletes the specified report definition in AWS Application Cost Profiler.
* This stops the report from being generated.
See Also:
AWS
* API Reference
*/
virtual Model::DeleteReportDefinitionOutcome DeleteReportDefinition(const Model::DeleteReportDefinitionRequest& request) const;
/**
* A Callable wrapper for DeleteReportDefinition that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::DeleteReportDefinitionOutcomeCallable DeleteReportDefinitionCallable(const DeleteReportDefinitionRequestT& request) const
{
return SubmitCallable(&ApplicationCostProfilerClient::DeleteReportDefinition, request);
}
/**
* An Async wrapper for DeleteReportDefinition that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void DeleteReportDefinitionAsync(const DeleteReportDefinitionRequestT& request, const DeleteReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ApplicationCostProfilerClient::DeleteReportDefinition, request, handler, context);
}
/**
* Retrieves the definition of a report already configured in AWS Application
* Cost Profiler.
See Also:
AWS
* API Reference
*/
virtual Model::GetReportDefinitionOutcome GetReportDefinition(const Model::GetReportDefinitionRequest& request) const;
/**
* A Callable wrapper for GetReportDefinition that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::GetReportDefinitionOutcomeCallable GetReportDefinitionCallable(const GetReportDefinitionRequestT& request) const
{
return SubmitCallable(&ApplicationCostProfilerClient::GetReportDefinition, request);
}
/**
* An Async wrapper for GetReportDefinition that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void GetReportDefinitionAsync(const GetReportDefinitionRequestT& request, const GetReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ApplicationCostProfilerClient::GetReportDefinition, request, handler, context);
}
/**
* Ingests application usage data from Amazon Simple Storage Service (Amazon
* S3).
The data must already exist in the S3 location. As part of the
* action, AWS Application Cost Profiler copies the object from your S3 bucket to
* an S3 bucket owned by Amazon for processing asynchronously.
See
* Also:
AWS
* API Reference
*/
virtual Model::ImportApplicationUsageOutcome ImportApplicationUsage(const Model::ImportApplicationUsageRequest& request) const;
/**
* A Callable wrapper for ImportApplicationUsage that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ImportApplicationUsageOutcomeCallable ImportApplicationUsageCallable(const ImportApplicationUsageRequestT& request) const
{
return SubmitCallable(&ApplicationCostProfilerClient::ImportApplicationUsage, request);
}
/**
* An Async wrapper for ImportApplicationUsage that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ImportApplicationUsageAsync(const ImportApplicationUsageRequestT& request, const ImportApplicationUsageResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ApplicationCostProfilerClient::ImportApplicationUsage, request, handler, context);
}
/**
* Retrieves a list of all reports and their configurations for your AWS
* account.
The maximum number of reports is one.
See Also:
* AWS
* API Reference
*/
virtual Model::ListReportDefinitionsOutcome ListReportDefinitions(const Model::ListReportDefinitionsRequest& request) const;
/**
* A Callable wrapper for ListReportDefinitions that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListReportDefinitionsOutcomeCallable ListReportDefinitionsCallable(const ListReportDefinitionsRequestT& request) const
{
return SubmitCallable(&ApplicationCostProfilerClient::ListReportDefinitions, request);
}
/**
* An Async wrapper for ListReportDefinitions that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListReportDefinitionsAsync(const ListReportDefinitionsRequestT& request, const ListReportDefinitionsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ApplicationCostProfilerClient::ListReportDefinitions, request, handler, context);
}
/**
* Creates the report definition for a report in Application Cost
* Profiler.
See Also:
AWS
* API Reference
*/
virtual Model::PutReportDefinitionOutcome PutReportDefinition(const Model::PutReportDefinitionRequest& request) const;
/**
* A Callable wrapper for PutReportDefinition that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::PutReportDefinitionOutcomeCallable PutReportDefinitionCallable(const PutReportDefinitionRequestT& request) const
{
return SubmitCallable(&ApplicationCostProfilerClient::PutReportDefinition, request);
}
/**
* An Async wrapper for PutReportDefinition that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void PutReportDefinitionAsync(const PutReportDefinitionRequestT& request, const PutReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ApplicationCostProfilerClient::PutReportDefinition, request, handler, context);
}
/**
* Updates existing report in AWS Application Cost Profiler.
See
* Also:
AWS
* API Reference
*/
virtual Model::UpdateReportDefinitionOutcome UpdateReportDefinition(const Model::UpdateReportDefinitionRequest& request) const;
/**
* A Callable wrapper for UpdateReportDefinition that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::UpdateReportDefinitionOutcomeCallable UpdateReportDefinitionCallable(const UpdateReportDefinitionRequestT& request) const
{
return SubmitCallable(&ApplicationCostProfilerClient::UpdateReportDefinition, request);
}
/**
* An Async wrapper for UpdateReportDefinition that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void UpdateReportDefinitionAsync(const UpdateReportDefinitionRequestT& request, const UpdateReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&ApplicationCostProfilerClient::UpdateReportDefinition, request, handler, context);
}
void OverrideEndpoint(const Aws::String& endpoint);
std::shared_ptr& accessEndpointProvider();
private:
friend class Aws::Client::ClientWithAsyncTemplateMethods;
void init(const ApplicationCostProfilerClientConfiguration& clientConfiguration);
ApplicationCostProfilerClientConfiguration m_clientConfiguration;
std::shared_ptr m_executor;
std::shared_ptr m_endpointProvider;
};
} // namespace ApplicationCostProfiler
} // namespace Aws