GenericClientConfiguration.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /**
  2. * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
  3. * SPDX-License-Identifier: Apache-2.0.
  4. */
  5. #include <aws/core/client/GenericClientConfiguration.h>
  6. #include <aws/core/platform/Environment.h>
  7. #include <aws/core/utils/memory/AWSMemory.h>
  8. #include <aws/core/utils/threading/Executor.h>
  9. namespace Aws
  10. {
  11. namespace Client
  12. {
  13. template struct AWS_CORE_API GenericClientConfiguration<false>;
  14. bool IsEndpointDiscoveryEnabled(const Aws::String& endpointOverride, const Aws::String &profileName)
  15. {
  16. bool enabled = true; // default value for AWS Services with enabled discovery trait
  17. if (!endpointOverride.empty())
  18. {
  19. enabled = false;
  20. }
  21. else
  22. {
  23. static const char* AWS_ENABLE_ENDPOINT_DISCOVERY_ENV_KEY = "AWS_ENABLE_ENDPOINT_DISCOVERY";
  24. static const char* AWS_ENABLE_ENDPOINT_DISCOVERY_PROFILE_KEY = "AWS_ENABLE_ENDPOINT_DISCOVERY";
  25. static const char* AWS_ENABLE_ENDPOINT_ENABLED = "true";
  26. static const char* AWS_ENABLE_ENDPOINT_DISABLED = "false";
  27. Aws::String enableEndpointDiscovery = ClientConfiguration::LoadConfigFromEnvOrProfile(AWS_ENABLE_ENDPOINT_DISCOVERY_ENV_KEY,
  28. profileName,
  29. AWS_ENABLE_ENDPOINT_DISCOVERY_PROFILE_KEY,
  30. {AWS_ENABLE_ENDPOINT_ENABLED, AWS_ENABLE_ENDPOINT_DISABLED},
  31. AWS_ENABLE_ENDPOINT_ENABLED);
  32. if (AWS_ENABLE_ENDPOINT_DISABLED == enableEndpointDiscovery)
  33. {
  34. // enabled by default unless explicitly disabled in ENV, profile config file, or programmatically later
  35. enabled = false;
  36. }
  37. }
  38. return enabled;
  39. }
  40. GenericClientConfiguration<true>::GenericClientConfiguration()
  41. : ClientConfiguration(),
  42. enableHostPrefixInjection(ClientConfiguration::enableHostPrefixInjection),
  43. enableEndpointDiscovery(ClientConfiguration::enableEndpointDiscovery)
  44. {
  45. enableEndpointDiscovery = IsEndpointDiscoveryEnabled(this->endpointOverride, this->profileName);
  46. enableHostPrefixInjection = false; // disabled by default in the SDK
  47. }
  48. GenericClientConfiguration<true>::GenericClientConfiguration(const char* inputProfileName, bool shouldDisableIMDS)
  49. : ClientConfiguration(inputProfileName, shouldDisableIMDS),
  50. enableHostPrefixInjection(ClientConfiguration::enableHostPrefixInjection),
  51. enableEndpointDiscovery(ClientConfiguration::enableEndpointDiscovery)
  52. {
  53. enableEndpointDiscovery = IsEndpointDiscoveryEnabled(this->endpointOverride, this->profileName);
  54. enableHostPrefixInjection = false; // disabled by default in the SDK
  55. }
  56. GenericClientConfiguration<true>::GenericClientConfiguration(bool useSmartDefaults, const char* inputDefaultMode, bool shouldDisableIMDS)
  57. : ClientConfiguration(useSmartDefaults, inputDefaultMode, shouldDisableIMDS),
  58. enableHostPrefixInjection(ClientConfiguration::enableHostPrefixInjection),
  59. enableEndpointDiscovery(ClientConfiguration::enableEndpointDiscovery)
  60. {
  61. enableEndpointDiscovery = IsEndpointDiscoveryEnabled(this->endpointOverride, this->profileName);
  62. enableHostPrefixInjection = false; // disabled by default in the SDK
  63. }
  64. GenericClientConfiguration<true>::GenericClientConfiguration(const ClientConfiguration& config)
  65. : ClientConfiguration(config),
  66. enableHostPrefixInjection(ClientConfiguration::enableHostPrefixInjection),
  67. enableEndpointDiscovery(ClientConfiguration::enableEndpointDiscovery)
  68. {
  69. enableEndpointDiscovery = IsEndpointDiscoveryEnabled(this->endpointOverride, this->profileName);
  70. enableHostPrefixInjection = false; // disabled by default in the SDK
  71. }
  72. GenericClientConfiguration<true>::GenericClientConfiguration(const GenericClientConfiguration<true>& other)
  73. : ClientConfiguration(static_cast<ClientConfiguration>(other)),
  74. enableHostPrefixInjection(ClientConfiguration::enableHostPrefixInjection),
  75. enableEndpointDiscovery(ClientConfiguration::enableEndpointDiscovery)
  76. {
  77. if (other.enableEndpointDiscovery) {
  78. enableEndpointDiscovery = other.enableEndpointDiscovery.value();
  79. }
  80. enableHostPrefixInjection = other.enableHostPrefixInjection;
  81. }
  82. GenericClientConfiguration<true>& GenericClientConfiguration<true>::operator=(const GenericClientConfiguration<true>& other)
  83. {
  84. if (this != &other) {
  85. *static_cast<ClientConfiguration*>(this) = static_cast<ClientConfiguration>(other);
  86. }
  87. return *this;
  88. }
  89. } // namespace Client
  90. } // namespace Aws