/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the appconfigdata-2021-11-11.normal.json service model.
*/
using System;
using System.Runtime.ExceptionServices;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Net;
using Amazon.AppConfigData.Model;
using Amazon.AppConfigData.Model.Internal.MarshallTransformations;
using Amazon.AppConfigData.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.AppConfigData
{
///
/// Implementation for accessing AppConfigData
///
/// AppConfig Data provides the data plane APIs your application uses to retrieve configuration
/// data. Here's how it works:
///
///
///
/// Your application retrieves configuration data by first establishing a configuration
/// session using the AppConfig Data StartConfigurationSession API action. Your
/// session's client then makes periodic calls to GetLatestConfiguration to check
/// for and retrieve the latest data available.
///
///
///
/// When calling StartConfigurationSession
, your code sends the following
/// information:
///
/// -
///
/// Identifiers (ID or name) of an AppConfig application, environment, and configuration
/// profile that the session tracks.
///
///
-
///
/// (Optional) The minimum amount of time the session's client must wait between calls
/// to
GetLatestConfiguration
.
///
///
///
/// In response, AppConfig provides an InitialConfigurationToken
to be given
/// to the session's client and used the first time it calls GetLatestConfiguration
/// for that session.
///
///
///
/// This token should only be used once in your first call to GetLatestConfiguration
.
/// You must use the new token in the GetLatestConfiguration
response
/// (NextPollConfigurationToken
) in each subsequent call to GetLatestConfiguration
.
///
///
///
/// When calling GetLatestConfiguration
, your client code sends the most
/// recent ConfigurationToken
value it has and receives in response:
///
/// -
///
///
NextPollConfigurationToken
: the ConfigurationToken
value
/// to use on the next call to GetLatestConfiguration
.
///
/// -
///
///
NextPollIntervalInSeconds
: the duration the client should wait before
/// making its next call to GetLatestConfiguration
. This duration may vary
/// over the course of the session, so it should be used instead of the value sent on
/// the StartConfigurationSession
call.
///
/// -
///
/// The configuration: the latest data intended for the session. This may be empty if
/// the client already has the latest version of the configuration.
///
///
///
/// The InitialConfigurationToken
and NextPollConfigurationToken
/// should only be used once. To support long poll use cases, the tokens are valid for
/// up to 24 hours. If a GetLatestConfiguration
call uses an expired token,
/// the system returns BadRequestException
.
///
///
///
/// For more information and to view example CLI commands that show how to retrieve a
/// configuration using the AppConfig Data StartConfigurationSession
and
/// GetLatestConfiguration
API actions, see Retrieving
/// the configuration in the AppConfig User Guide.
///
///
public partial class AmazonAppConfigDataClient : AmazonServiceClient, IAmazonAppConfigData
{
private static IServiceMetadata serviceMetadata = new AmazonAppConfigDataMetadata();
#region Constructors
///
/// Constructs AmazonAppConfigDataClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
public AmazonAppConfigDataClient()
: base(FallbackCredentialsFactory.GetCredentials(), new AmazonAppConfigDataConfig()) { }
///
/// Constructs AmazonAppConfigDataClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
/// The region to connect.
public AmazonAppConfigDataClient(RegionEndpoint region)
: base(FallbackCredentialsFactory.GetCredentials(), new AmazonAppConfigDataConfig{RegionEndpoint = region}) { }
///
/// Constructs AmazonAppConfigDataClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
/// The AmazonAppConfigDataClient Configuration Object
public AmazonAppConfigDataClient(AmazonAppConfigDataConfig config)
: base(FallbackCredentialsFactory.GetCredentials(config), config){}
///
/// Constructs AmazonAppConfigDataClient with AWS Credentials
///
/// AWS Credentials
public AmazonAppConfigDataClient(AWSCredentials credentials)
: this(credentials, new AmazonAppConfigDataConfig())
{
}
///
/// Constructs AmazonAppConfigDataClient with AWS Credentials
///
/// AWS Credentials
/// The region to connect.
public AmazonAppConfigDataClient(AWSCredentials credentials, RegionEndpoint region)
: this(credentials, new AmazonAppConfigDataConfig{RegionEndpoint = region})
{
}
///
/// Constructs AmazonAppConfigDataClient with AWS Credentials and an
/// AmazonAppConfigDataClient Configuration object.
///
/// AWS Credentials
/// The AmazonAppConfigDataClient Configuration Object
public AmazonAppConfigDataClient(AWSCredentials credentials, AmazonAppConfigDataConfig clientConfig)
: base(credentials, clientConfig)
{
}
///
/// Constructs AmazonAppConfigDataClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
public AmazonAppConfigDataClient(string awsAccessKeyId, string awsSecretAccessKey)
: this(awsAccessKeyId, awsSecretAccessKey, new AmazonAppConfigDataConfig())
{
}
///
/// Constructs AmazonAppConfigDataClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// The region to connect.
public AmazonAppConfigDataClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
: this(awsAccessKeyId, awsSecretAccessKey, new AmazonAppConfigDataConfig() {RegionEndpoint=region})
{
}
///
/// Constructs AmazonAppConfigDataClient with AWS Access Key ID, AWS Secret Key and an
/// AmazonAppConfigDataClient Configuration object.
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// The AmazonAppConfigDataClient Configuration Object
public AmazonAppConfigDataClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonAppConfigDataConfig clientConfig)
: base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
{
}
///
/// Constructs AmazonAppConfigDataClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
public AmazonAppConfigDataClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
: this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonAppConfigDataConfig())
{
}
///
/// Constructs AmazonAppConfigDataClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
/// The region to connect.
public AmazonAppConfigDataClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
: this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonAppConfigDataConfig{RegionEndpoint = region})
{
}
///
/// Constructs AmazonAppConfigDataClient with AWS Access Key ID, AWS Secret Key and an
/// AmazonAppConfigDataClient Configuration object.
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
/// The AmazonAppConfigDataClient Configuration Object
public AmazonAppConfigDataClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonAppConfigDataConfig clientConfig)
: base(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, clientConfig)
{
}
#endregion
#region Overrides
///
/// Creates the signer for the service.
///
protected override AbstractAWSSigner CreateSigner()
{
return new AWS4Signer();
}
///
/// Customizes the runtime pipeline.
///
/// Runtime pipeline for the current client.
protected override void CustomizeRuntimePipeline(RuntimePipeline pipeline)
{
pipeline.RemoveHandler();
pipeline.AddHandlerAfter(new AmazonAppConfigDataEndpointResolver());
}
///
/// Capture metadata for the service.
///
protected override IServiceMetadata ServiceMetadata
{
get
{
return serviceMetadata;
}
}
#endregion
#region Dispose
///
/// Disposes the service client.
///
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
#endregion
#region GetLatestConfiguration
internal virtual GetLatestConfigurationResponse GetLatestConfiguration(GetLatestConfigurationRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = GetLatestConfigurationRequestMarshaller.Instance;
options.ResponseUnmarshaller = GetLatestConfigurationResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// Retrieves the latest deployed configuration. This API may return empty configuration
/// data if the client already has the latest version. For more information about this
/// API action and to view example CLI commands that show how to use it with the StartConfigurationSession
/// API action, see Retrieving
/// the configuration in the AppConfig User Guide.
///
///
///
/// Note the following important information.
///
/// -
///
/// Each configuration token is only valid for one call to
GetLatestConfiguration
.
/// The GetLatestConfiguration
response includes a NextPollConfigurationToken
/// that should always replace the token used for the just-completed call in preparation
/// for the next one.
///
/// -
///
///
GetLatestConfiguration
is a priced call. For more information, see Pricing.
///
///
///
/// Container for the necessary parameters to execute the GetLatestConfiguration service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the GetLatestConfiguration service method, as returned by AppConfigData.
///
/// The input fails to satisfy the constraints specified by the service.
///
///
/// There was an internal failure in the service.
///
///
/// The requested resource could not be found.
///
///
/// The request was denied due to request throttling.
///
/// REST API Reference for GetLatestConfiguration Operation
public virtual Task GetLatestConfigurationAsync(GetLatestConfigurationRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
{
var options = new InvokeOptions();
options.RequestMarshaller = GetLatestConfigurationRequestMarshaller.Instance;
options.ResponseUnmarshaller = GetLatestConfigurationResponseUnmarshaller.Instance;
return InvokeAsync(request, options, cancellationToken);
}
#endregion
#region StartConfigurationSession
internal virtual StartConfigurationSessionResponse StartConfigurationSession(StartConfigurationSessionRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = StartConfigurationSessionRequestMarshaller.Instance;
options.ResponseUnmarshaller = StartConfigurationSessionResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// Starts a configuration session used to retrieve a deployed configuration. For more
/// information about this API action and to view example CLI commands that show how to
/// use it with the GetLatestConfiguration API action, see Retrieving
/// the configuration in the AppConfig User Guide.
///
/// Container for the necessary parameters to execute the StartConfigurationSession service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the StartConfigurationSession service method, as returned by AppConfigData.
///
/// The input fails to satisfy the constraints specified by the service.
///
///
/// There was an internal failure in the service.
///
///
/// The requested resource could not be found.
///
///
/// The request was denied due to request throttling.
///
/// REST API Reference for StartConfigurationSession Operation
public virtual Task StartConfigurationSessionAsync(StartConfigurationSessionRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
{
var options = new InvokeOptions();
options.RequestMarshaller = StartConfigurationSessionRequestMarshaller.Instance;
options.ResponseUnmarshaller = StartConfigurationSessionResponseUnmarshaller.Instance;
return InvokeAsync(request, options, cancellationToken);
}
#endregion
}
}