/* * 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. */ using System; using System.Net; using Amazon.Runtime.Internal; using Amazon.Runtime.Endpoints; using Amazon.Runtime.Internal.Auth; using Amazon.Util; #if NETSTANDARD using System.Net.Http; #endif namespace Amazon.Runtime { /// /// This interface is the read only access to the ClientConfig object used when setting up service clients. Once service clients /// are initiated the config object should not be changed to avoid issues with using a service client in a multi threaded environment. /// public partial interface IClientConfig { /// /// If set to true the SDK will ignore the configured endpointUrls in the config file or in the environment variables. /// By default it is set to false. /// bool IgnoreConfiguredEndpointUrls { get; } /// /// The serviceId for the service, which is specified in the metadata in the ServiceModel. /// The transformed value of the service ID (replace any spaces in the service ID /// with underscores and uppercase all letters) is used to set service-specific endpoint urls. /// I.e: AWS_ENDPOINT_URL_ELASTIC_BEANSTALK /// For configuration files, replace any spaces with underscores and lowercase all letters /// I.e. elastic_beanstalk = /// endpoint_url = http://localhost:8000 /// string ServiceId { get; } /// /// Specifies the profile to be used. When this is set on the ClientConfig and that config is passed to /// the service client constructor the sdk will try to find the credentials associated with the Profile.Name property /// If set, this will override AWS_PROFILE and AWSConfigs.ProfileName. /// Profile Profile { get; } /// /// For Services using Bearer authentication, this controls how /// resolves a . /// /// See for additional information. /// IAWSTokenProvider AWSTokenProvider { get; } /// /// Returns the that will be used. If none is specified, /// than the correct one is computed by . /// DefaultConfigurationMode DefaultConfigurationMode { get; } /// /// Gets the RegionEndpoint property. The region constant to use that /// determines the endpoint to use. If this is not set /// then the client will fallback to the value of ServiceURL. /// RegionEndpoint RegionEndpoint { get; } /// /// The constant used to lookup in the region hash the endpoint. /// string RegionEndpointServiceName { get; } /// /// Gets and sets of the ServiceURL property. /// This is an optional property if you need to set a specific service URL /// instead setting the region with the RegionEndpoint property. /// string ServiceURL { get; } /// /// Gets and sets of the EndpointProvider property. /// This property is used for endpoints resolution. /// During service client creation it is set to service's default generated EndpointProvider, /// but can be changed to use custom user supplied EndpointProvider. /// IEndpointProvider EndpointProvider { get; } /// /// Gets the UseHttp property. /// If this property is set to true, the client attempts /// to use HTTP protocol. /// By default, this property is set to false. /// bool UseHttp { get; } /// /// Gets Service Version /// string ServiceVersion { get; } /// /// Gets the signatureMethod property. /// SigningAlgorithm SignatureMethod { get; } /// /// Gets the SignatureVersion property. /// /// Note: This property exists for backward compatibility but is no longer /// used by any service other than S3. /// string SignatureVersion { get; } /// /// Gets the AuthenticationRegion property. /// Used in AWS4 request signing, this is an optional property; /// change it only if the region cannot be determined from the /// service endpoint. /// string AuthenticationRegion { get; } /// /// Gets the AuthenticationServiceName property. /// Used in AWS4 request signing, this is the short-form /// name of the service being called. /// string AuthenticationServiceName { get; } /// /// Gets the UserAgent property. /// string UserAgent { get; } /// /// Gets the DisableLogging. If true logging for this client will be disabled. /// bool DisableLogging { get; } /// /// Flag on whether to log metrics for service calls. /// /// This can be set in the application's configs, as below: /// /// <?xml version="1.0" encoding="utf-8" ?> /// <configuration> /// <appSettings> /// <add key="AWSLogMetrics" value"true"/> /// </appSettings> /// </configuration> /// /// bool LogMetrics { get; } /// /// Gets the LogResponse property. /// If this property is set to true, the service response /// is read in its entirety and logged. /// bool LogResponse { get; } /// /// Gets the ReadEntireResponse. /// If this property is set to true, the service response /// is read in its entirety before being processed. /// bool ReadEntireResponse { get; } /// /// This flag controls if .NET HTTP infrastructure should follow redirection /// responses (e.g. HTTP 307 - temporary redirect). /// bool AllowAutoRedirect { get; } /// /// Gets the BufferSize property. /// The BufferSize controls the buffer used to read in from input streams and write /// out to the request. /// int BufferSize { get; } /// /// Returns the flag indicating how many retry HTTP requests an SDK should /// make for a single SDK operation invocation before giving up. This flag will /// return 4 when the RetryMode is set to "Legacy" which is the default. For /// RetryMode values of "Standard" or "Adaptive" this flag will return 2. In /// addition to the values returned that are dependant on the RetryMode, the /// value can be set to a specific value by using the AWS_MAX_ATTEMPTS environment /// variable, max_attempts in the shared configuration file, or by setting a /// value directly on this property. When using AWS_MAX_ATTEMPTS or max_attempts /// the value returned from this property will be one less than the value entered /// because this flag is the number of retry requests, not total requests. To /// learn more about the RetryMode property that affects the values returned by /// this flag, see . /// int MaxErrorRetry { get; } /// /// Determines if MaxErrorRetry has been manually set. /// bool IsMaxErrorRetrySet { get; } /// /// Gets the interval at which progress update events are raised /// for upload operations. By default, the progress update events are /// raised at every 100KB of data transferred. /// long ProgressUpdateInterval { get; } /// /// Flag on whether to resign requests on retry or not. /// bool ResignRetries { get; } /// /// Credentials to use with a proxy. /// ICredentials ProxyCredentials { get; } /// /// Gets the default request timeout value. /// /// /// /// If the value is set, the value is assigned to the Timeout property of the HTTPWebRequest/HttpClient object used /// to send requests. /// /// /// Please specify a timeout value only if the operation will not complete within the default intervals /// specified for an HttpWebRequest/HttpClient. /// /// TimeSpan? Timeout { get; } /// /// Configures the endpoint calculation for a service to go to a dual stack (ipv6 enabled) endpoint /// for the configured region. /// /// /// Note: AWS services are enabling dualstack endpoints over time. It is your responsibility to check /// that the service actually supports a dualstack endpoint in the configured region before enabling /// this option for a service. /// bool UseDualstackEndpoint { get; } /// /// Configures the endpoint calculation to go to a FIPS (https://aws.amazon.com/compliance/fips/) endpoint /// for the configured region. /// bool UseFIPSEndpoint { get; } /// /// Configures a flag enabling to either opt in or opt out of the retry throttling service. /// Note: set value to true to enable retry throttling feature. The Default value for this flag is false. /// bool ThrottleRetries { get; } /// /// Using either the RegionEndpoint or the ServiceURL determine what the URL to the service is. /// /// The URL to the service. [Obsolete("This operation is obsoleted because as of version 3.7.100 endpoint is resolved using a newer system that uses request level parameters to resolve the endpoint.")] string DetermineServiceURL(); /// /// Given this client configuration, return a DNS suffix for service endpoint url. /// [Obsolete("This operation is obsoleted because as of version 3.7.100 endpoint is resolved using a newer system that uses request level parameters to resolve the endpoint.")] string DetermineDnsSuffix(); /// /// Performs validation on this config object. /// Throws exception if any of the required values are missing/invalid. /// /// The timeout specified is null. void Validate(); /// /// Returns the clock skew adjusted utc now. This value is affected by AWSConfigs.ManualClockCorrection /// DateTime CorrectedUtcNow { get; } /// /// Returns the calculated clock skew value for this config's service endpoint. If AWSConfigs.CorrectForClockSkew is false, /// this value won't be used to construct service requests. /// TimeSpan ClockOffset { get; } /// /// Gets the DisableHostPrefixInjection flag. If true, host prefix injection will be disabled for this client, the default value of this flag is false. /// Host prefix injection prefixes the service endpoint with request members from APIs which use this feature. /// Example: for a hostPrefix of "foo-name." and a endpoint of "service.region.amazonaws.com" the default behavior is to /// prefix the endpoint with the hostPrefix resulting in a final endpoint of "foo-name.service.region.amazonaws.com". Setting /// DisableHostPrefixInjection to true will disable hostPrefix injection resulting in a final endpoint of /// "service.region.amazonaws.com" regardless of the value of hostPrefix. E.g. You may want to disable host prefix injection for testing against a local mock endpoint. /// bool DisableHostPrefixInjection { get; } /// /// Returns the flag indicating if endpoint discovery should be enabled or disabled for operations that are not required to use endpoint discovery. /// bool EndpointDiscoveryEnabled { get; } /// /// Returns the maximum number of discovered endpoints that can be stored within the cache for the client. The default limit is 1000 cache entries. /// int EndpointDiscoveryCacheLimit { get; } /// /// Returns the flag indicating the current mode in use for request /// retries and influences the value returned from . /// The default value is RequestRetryMode.Legacy. This flag can be configured /// by using the AWS_RETRY_MODE environment variable, retry_mode in the /// shared configuration file, or by setting this value directly. /// RequestRetryMode RetryMode { get; } /// /// Under Adaptive retry mode, this flag determines if the client should wait for /// a send token to become available or don't block and fail the request immediately /// if a send token is not available. /// bool FastFailRequests { get; } /// /// When set to true, the service client will use the x-amz-user-agent /// header instead of the User-Agent header to report version and /// environment information to the AWS service. /// /// Note: This is especially useful when using a platform like WebAssembly /// which doesn't allow to specify the User-Agent header. /// bool UseAlternateUserAgentHeader { get; } #if BCL /// /// Gets the TCP keep-alive values to use for service requests. Enabling TCP keep-alive sends periodic TCP keep-alive probe packets, to prevent disconnection due to /// network inactivity. This is useful when you make API calls that take a long time to respond. In this case, the connection could be dropped by an intermediate /// node (e.g. proxy) as the connection is inactive for a long time. Timeout controls the duration of inactivity before a keep-alive probe packet is sent. /// Interval controls the amount of time to wait before retrying a keep-alive probe packet in the event the server doesn't respond to a keep-alive probe. /// TcpKeepAlive TcpKeepAlive { get; } #endif #if NETSTANDARD /// /// Get the value to use for on requests. /// If this property is null, /// will be left at its default value of . /// int? MaxConnectionsPerServer { get; } /// /// /// This is a switch used for performance testing and is not intended for production applications /// to change. This switch may be removed in a future version of the SDK as the .NET Core platform matures. /// /// /// If true, the HttpClient is cached and reused for every request made by the service client /// and shared with other service clients. /// /// /// For the .NET Core platform this is default to true because the HttpClient manages the connection /// pool. /// /// bool CacheHttpClient { get; } /// /// If CacheHttpClient is set to true then HttpClientCacheSize controls the number of HttpClients cached. /// int HttpClientCacheSize { get; } #endif } }