/** * 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 namespace Aws { namespace S3 { namespace Endpoint { using S3ClientConfiguration = Aws::S3::S3ClientConfiguration; using EndpointParameters = Aws::Endpoint::EndpointParameters; using Aws::Endpoint::EndpointProviderBase; using Aws::Endpoint::DefaultEndpointProvider; class AWS_S3_API S3ClientContextParameters : public Aws::Endpoint::ClientContextParameters { public: virtual ~S3ClientContextParameters(){}; /** * Forces this client to use path-style addressing for buckets. */ void SetForcePathStyle(bool value); const ClientContextParameters::EndpointParameter& GetForcePathStyle() const; /** * Disables this client's usage of Multi-Region Access Points. */ void SetDisableMultiRegionAccessPoints(bool value); const ClientContextParameters::EndpointParameter& GetDisableMultiRegionAccessPoints() const; /** * Enables this client to use an ARN's region when constructing an endpoint instead of the client's configured region. */ void SetUseArnRegion(bool value); const ClientContextParameters::EndpointParameter& GetUseArnRegion() const; /** * Enables this client to use S3 Transfer Acceleration endpoints. */ void SetAccelerate(bool value); const ClientContextParameters::EndpointParameter& GetAccelerate() const; }; class AWS_S3_API S3BuiltInParameters : public Aws::Endpoint::BuiltInParameters { public: virtual ~S3BuiltInParameters(){}; using Aws::Endpoint::BuiltInParameters::SetFromClientConfiguration; virtual void SetFromClientConfiguration(const S3ClientConfiguration& config); }; /** * The type for the S3 Client Endpoint Provider. * Inherit from this Base class / "Interface" should you want to provide a custom endpoint provider. * The SDK must use service-specific type for each service per specification. */ using S3EndpointProviderBase = EndpointProviderBase; using S3DefaultEpProviderBase = DefaultEndpointProvider; } // namespace Endpoint } // namespace S3 namespace Endpoint { /** * Export endpoint provider symbols from DLL */ template class AWS_S3_API Aws::Endpoint::EndpointProviderBase; template class AWS_S3_API Aws::Endpoint::DefaultEndpointProvider; } // namespace Endpoint namespace S3 { namespace Endpoint { /** * Default endpoint provider used for this service */ class AWS_S3_API S3EndpointProvider : public S3DefaultEpProviderBase { public: using S3ResolveEndpointOutcome = Aws::Endpoint::ResolveEndpointOutcome; S3EndpointProvider() : S3DefaultEpProviderBase(Aws::S3::S3EndpointRules::GetRulesBlob(), Aws::S3::S3EndpointRules::RulesBlobSize) {} ~S3EndpointProvider() { } }; } // namespace Endpoint } // namespace S3 } // namespace Aws