S3EndpointProvider.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /**
  2. * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
  3. * SPDX-License-Identifier: Apache-2.0.
  4. */
  5. #pragma once
  6. #include <aws/s3/S3_EXPORTS.h>
  7. #include <aws/s3/S3ClientConfiguration.h>
  8. #include <aws/core/endpoint/DefaultEndpointProvider.h>
  9. #include <aws/core/endpoint/EndpointParameter.h>
  10. #include <aws/core/utils/memory/stl/AWSString.h>
  11. #include <aws/core/utils/memory/stl/AWSVector.h>
  12. #include <aws/s3/S3EndpointRules.h>
  13. namespace Aws
  14. {
  15. namespace S3
  16. {
  17. namespace Endpoint
  18. {
  19. using S3ClientConfiguration = Aws::S3::S3ClientConfiguration;
  20. using EndpointParameters = Aws::Endpoint::EndpointParameters;
  21. using Aws::Endpoint::EndpointProviderBase;
  22. using Aws::Endpoint::DefaultEndpointProvider;
  23. class AWS_S3_API S3ClientContextParameters : public Aws::Endpoint::ClientContextParameters
  24. {
  25. public:
  26. virtual ~S3ClientContextParameters(){};
  27. /**
  28. * Forces this client to use path-style addressing for buckets.
  29. */
  30. void SetForcePathStyle(bool value);
  31. const ClientContextParameters::EndpointParameter& GetForcePathStyle() const;
  32. /**
  33. * Disables this client's usage of Multi-Region Access Points.
  34. */
  35. void SetDisableMultiRegionAccessPoints(bool value);
  36. const ClientContextParameters::EndpointParameter& GetDisableMultiRegionAccessPoints() const;
  37. /**
  38. * Enables this client to use an ARN's region when constructing an endpoint instead of the client's configured region.
  39. */
  40. void SetUseArnRegion(bool value);
  41. const ClientContextParameters::EndpointParameter& GetUseArnRegion() const;
  42. /**
  43. * Enables this client to use S3 Transfer Acceleration endpoints.
  44. */
  45. void SetAccelerate(bool value);
  46. const ClientContextParameters::EndpointParameter& GetAccelerate() const;
  47. };
  48. class AWS_S3_API S3BuiltInParameters : public Aws::Endpoint::BuiltInParameters
  49. {
  50. public:
  51. virtual ~S3BuiltInParameters(){};
  52. using Aws::Endpoint::BuiltInParameters::SetFromClientConfiguration;
  53. virtual void SetFromClientConfiguration(const S3ClientConfiguration& config);
  54. };
  55. /**
  56. * The type for the S3 Client Endpoint Provider.
  57. * Inherit from this Base class / "Interface" should you want to provide a custom endpoint provider.
  58. * The SDK must use service-specific type for each service per specification.
  59. */
  60. using S3EndpointProviderBase =
  61. EndpointProviderBase<S3ClientConfiguration, S3BuiltInParameters, S3ClientContextParameters>;
  62. using S3DefaultEpProviderBase =
  63. DefaultEndpointProvider<S3ClientConfiguration, S3BuiltInParameters, S3ClientContextParameters>;
  64. } // namespace Endpoint
  65. } // namespace S3
  66. namespace Endpoint
  67. {
  68. /**
  69. * Export endpoint provider symbols from DLL
  70. */
  71. template class AWS_S3_API
  72. Aws::Endpoint::EndpointProviderBase<S3::Endpoint::S3ClientConfiguration, S3::Endpoint::S3BuiltInParameters, S3::Endpoint::S3ClientContextParameters>;
  73. template class AWS_S3_API
  74. Aws::Endpoint::DefaultEndpointProvider<S3::Endpoint::S3ClientConfiguration, S3::Endpoint::S3BuiltInParameters, S3::Endpoint::S3ClientContextParameters>;
  75. } // namespace Endpoint
  76. namespace S3
  77. {
  78. namespace Endpoint
  79. {
  80. /**
  81. * Default endpoint provider used for this service
  82. */
  83. class AWS_S3_API S3EndpointProvider : public S3DefaultEpProviderBase
  84. {
  85. public:
  86. using S3ResolveEndpointOutcome = Aws::Endpoint::ResolveEndpointOutcome;
  87. S3EndpointProvider()
  88. : S3DefaultEpProviderBase(Aws::S3::S3EndpointRules::GetRulesBlob(), Aws::S3::S3EndpointRules::RulesBlobSize)
  89. {}
  90. ~S3EndpointProvider()
  91. {
  92. }
  93. };
  94. } // namespace Endpoint
  95. } // namespace S3
  96. } // namespace Aws