options.go (8685B)
1 // Code generated by smithy-go-codegen DO NOT EDIT. 2 3 package route53 4 5 import ( 6 "context" 7 "github.com/aws/aws-sdk-go-v2/aws" 8 awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" 9 internalauthsmithy "github.com/aws/aws-sdk-go-v2/internal/auth/smithy" 10 smithyauth "github.com/aws/smithy-go/auth" 11 "github.com/aws/smithy-go/logging" 12 "github.com/aws/smithy-go/metrics" 13 "github.com/aws/smithy-go/middleware" 14 "github.com/aws/smithy-go/tracing" 15 smithyhttp "github.com/aws/smithy-go/transport/http" 16 "net/http" 17 ) 18 19 type HTTPClient interface { 20 Do(*http.Request) (*http.Response, error) 21 } 22 23 type Options struct { 24 // Set of options to modify how an operation is invoked. These apply to all 25 // operations invoked for this client. Use functional options on operation call to 26 // modify this list for per operation behavior. 27 APIOptions []func(*middleware.Stack) error 28 29 // The optional application specific identifier appended to the User-Agent header. 30 AppID string 31 32 // This endpoint will be given as input to an EndpointResolverV2. It is used for 33 // providing a custom base endpoint that is subject to modifications by the 34 // processing EndpointResolverV2. 35 BaseEndpoint *string 36 37 // Configures the events that will be sent to the configured logger. 38 ClientLogMode aws.ClientLogMode 39 40 // The credentials object to use when signing requests. 41 Credentials aws.CredentialsProvider 42 43 // The configuration DefaultsMode that the SDK should use when constructing the 44 // clients initial default settings. 45 DefaultsMode aws.DefaultsMode 46 47 // The endpoint options to be used when attempting to resolve an endpoint. 48 EndpointOptions EndpointResolverOptions 49 50 // The service endpoint resolver. 51 // 52 // Deprecated: Deprecated: EndpointResolver and WithEndpointResolver. Providing a 53 // value for this field will likely prevent you from using any endpoint-related 54 // service features released after the introduction of EndpointResolverV2 and 55 // BaseEndpoint. 56 // 57 // To migrate an EndpointResolver implementation that uses a custom endpoint, set 58 // the client option BaseEndpoint instead. 59 EndpointResolver EndpointResolver 60 61 // Resolves the endpoint used for a particular service operation. This should be 62 // used over the deprecated EndpointResolver. 63 EndpointResolverV2 EndpointResolverV2 64 65 // Signature Version 4 (SigV4) Signer 66 HTTPSignerV4 HTTPSignerV4 67 68 // The logger writer interface to write logging messages to. 69 Logger logging.Logger 70 71 // The client meter provider. 72 MeterProvider metrics.MeterProvider 73 74 // The region to send requests to. (Required) 75 Region string 76 77 // RetryMaxAttempts specifies the maximum number attempts an API client will call 78 // an operation that fails with a retryable error. A value of 0 is ignored, and 79 // will not be used to configure the API client created default retryer, or modify 80 // per operation call's retry max attempts. 81 // 82 // If specified in an operation call's functional options with a value that is 83 // different than the constructed client's Options, the Client's Retryer will be 84 // wrapped to use the operation's specific RetryMaxAttempts value. 85 RetryMaxAttempts int 86 87 // RetryMode specifies the retry mode the API client will be created with, if 88 // Retryer option is not also specified. 89 // 90 // When creating a new API Clients this member will only be used if the Retryer 91 // Options member is nil. This value will be ignored if Retryer is not nil. 92 // 93 // Currently does not support per operation call overrides, may in the future. 94 RetryMode aws.RetryMode 95 96 // Retryer guides how HTTP requests should be retried in case of recoverable 97 // failures. When nil the API client will use a default retryer. The kind of 98 // default retry created by the API client can be changed with the RetryMode 99 // option. 100 Retryer aws.Retryer 101 102 // The RuntimeEnvironment configuration, only populated if the DefaultsMode is set 103 // to DefaultsModeAuto and is initialized using config.LoadDefaultConfig . You 104 // should not populate this structure programmatically, or rely on the values here 105 // within your applications. 106 RuntimeEnvironment aws.RuntimeEnvironment 107 108 // The client tracer provider. 109 TracerProvider tracing.TracerProvider 110 111 // The initial DefaultsMode used when the client options were constructed. If the 112 // DefaultsMode was set to aws.DefaultsModeAuto this will store what the resolved 113 // value was at that point in time. 114 // 115 // Currently does not support per operation call overrides, may in the future. 116 resolvedDefaultsMode aws.DefaultsMode 117 118 // The HTTP client to invoke API calls with. Defaults to client's default HTTP 119 // implementation if nil. 120 HTTPClient HTTPClient 121 122 // Client registry of operation interceptors. 123 Interceptors smithyhttp.InterceptorRegistry 124 125 // The auth scheme resolver which determines how to authenticate for each 126 // operation. 127 AuthSchemeResolver AuthSchemeResolver 128 129 // The list of auth schemes supported by the client. 130 AuthSchemes []smithyhttp.AuthScheme 131 132 // Priority list of preferred auth scheme names (e.g. sigv4a). 133 AuthSchemePreference []string 134 } 135 136 // Copy creates a clone where the APIOptions list is deep copied. 137 func (o Options) Copy() Options { 138 to := o 139 to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) 140 copy(to.APIOptions, o.APIOptions) 141 to.Interceptors = o.Interceptors.Copy() 142 143 return to 144 } 145 146 func (o Options) GetIdentityResolver(schemeID string) smithyauth.IdentityResolver { 147 if schemeID == "aws.auth#sigv4" { 148 return getSigV4IdentityResolver(o) 149 } 150 if schemeID == "smithy.api#noAuth" { 151 return &smithyauth.AnonymousIdentityResolver{} 152 } 153 return nil 154 } 155 156 // WithAPIOptions returns a functional option for setting the Client's APIOptions 157 // option. 158 func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) { 159 return func(o *Options) { 160 o.APIOptions = append(o.APIOptions, optFns...) 161 } 162 } 163 164 // Deprecated: EndpointResolver and WithEndpointResolver. Providing a value for 165 // this field will likely prevent you from using any endpoint-related service 166 // features released after the introduction of EndpointResolverV2 and BaseEndpoint. 167 // 168 // To migrate an EndpointResolver implementation that uses a custom endpoint, set 169 // the client option BaseEndpoint instead. 170 func WithEndpointResolver(v EndpointResolver) func(*Options) { 171 return func(o *Options) { 172 o.EndpointResolver = v 173 } 174 } 175 176 // WithEndpointResolverV2 returns a functional option for setting the Client's 177 // EndpointResolverV2 option. 178 func WithEndpointResolverV2(v EndpointResolverV2) func(*Options) { 179 return func(o *Options) { 180 o.EndpointResolverV2 = v 181 } 182 } 183 184 func getSigV4IdentityResolver(o Options) smithyauth.IdentityResolver { 185 if o.Credentials != nil { 186 return &internalauthsmithy.CredentialsProviderAdapter{Provider: o.Credentials} 187 } 188 return nil 189 } 190 191 // WithSigV4SigningName applies an override to the authentication workflow to 192 // use the given signing name for SigV4-authenticated operations. 193 // 194 // This is an advanced setting. The value here is FINAL, taking precedence over 195 // the resolved signing name from both auth scheme resolution and endpoint 196 // resolution. 197 func WithSigV4SigningName(name string) func(*Options) { 198 fn := func(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 199 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 200 ) { 201 return next.HandleInitialize(awsmiddleware.SetSigningName(ctx, name), in) 202 } 203 return func(o *Options) { 204 o.APIOptions = append(o.APIOptions, func(s *middleware.Stack) error { 205 return s.Initialize.Add( 206 middleware.InitializeMiddlewareFunc("withSigV4SigningName", fn), 207 middleware.Before, 208 ) 209 }) 210 } 211 } 212 213 // WithSigV4SigningRegion applies an override to the authentication workflow to 214 // use the given signing region for SigV4-authenticated operations. 215 // 216 // This is an advanced setting. The value here is FINAL, taking precedence over 217 // the resolved signing region from both auth scheme resolution and endpoint 218 // resolution. 219 func WithSigV4SigningRegion(region string) func(*Options) { 220 fn := func(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 221 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 222 ) { 223 return next.HandleInitialize(awsmiddleware.SetSigningRegion(ctx, region), in) 224 } 225 return func(o *Options) { 226 o.APIOptions = append(o.APIOptions, func(s *middleware.Stack) error { 227 return s.Initialize.Add( 228 middleware.InitializeMiddlewareFunc("withSigV4SigningRegion", fn), 229 middleware.Before, 230 ) 231 }) 232 } 233 } 234 235 func ignoreAnonymousAuth(options *Options) { 236 if aws.IsCredentialsProvider(options.Credentials, (*aws.AnonymousCredentials)(nil)) { 237 options.Credentials = nil 238 } 239 }