7#include <smithy/identity/auth/AuthSchemeOption.h>
8#include <smithy/identity/signer/AwsSignerBase.h>
10#include <aws/crt/Variant.h>
11#include <aws/core/utils/memory/stl/AWSVector.h>
37 Aws::Crt::Optional<Aws::String>
region;
48template<
typename ServiceAuthSchemeParametersT = DefaultAuthSchemeResolverParameters,
typename ClientConfigT = Aws::Client::ClientConfiguration>
53 virtual void Init(
const ClientConfigT& config) {
54 AWS_UNREFERENCED_PARAM(config);
71 if (preferences.empty())
return options;
74 for (
const auto& pref : preferences) {
75 auto prefSchemeIt = find_if(
AUTH_SCHEME_NAME_TO_ID.begin(),
AUTH_SCHEME_NAME_TO_ID.end(), [&](
const std::pair<const char*, const char*> &pair) { return Aws::Utils::StringUtils::ToLower(pref.c_str()) == pair.first; });
77 for (
const auto& option : options) {
78 if (strcmp(option.schemeId, prefSchemeIt->second) == 0) {
79 filtered.push_back(option);
84 return filtered.empty() ? options : filtered;
virtual Aws::Vector< AuthSchemeOption > resolveAuthScheme(const ServiceAuthSchemeParameters &identityProperties)
virtual ~AuthSchemeResolverBase()=default
virtual void Init(const ClientConfigT &config)
virtual Aws::Vector< AuthSchemeOption > filterByPreferences(const Aws::Vector< AuthSchemeOption > &options, const Aws::Vector< Aws::String > &preferences)
virtual Aws::Vector< AuthSchemeOption > resolveAuthSchemeImpl(const ServiceAuthSchemeParameters &identityProperties)=0
ServiceAuthSchemeParametersT ServiceAuthSchemeParameters
Aws::UnorderedMap< Aws::String, Aws::Crt::Variant< Aws::String, bool, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy, Aws::Auth::AWSSigningAlgorithm, Aws::Vector< Aws::String > > > additionalProperties
Aws::Crt::Optional< Aws::String > region
Aws::Vector< Aws::String > authPreferences
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
std::vector< T, Aws::Allocator< T > > Vector
std::unordered_map< K, V, std::hash< K >, std::equal_to< K >, Aws::Allocator< std::pair< const K, V > > > UnorderedMap
static const char SIGV4_PREFERENCE[]
static const Aws::Array< std::pair< const char *, const char * >, 4 > AUTH_SCHEME_NAME_TO_ID
static const char NO_AUTH_PREFERENCE[]
static const char BEARER_PREFERENCE[]
static const char SIGV4A_PREFERENCE[]