123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- package aws
- import (
- "fmt"
- )
- // DualStackEndpointState is a constant to describe the dual-stack endpoint resolution behavior.
- type DualStackEndpointState uint
- const (
- // DualStackEndpointStateUnset is the default value behavior for dual-stack endpoint resolution.
- DualStackEndpointStateUnset DualStackEndpointState = iota
- // DualStackEndpointStateEnabled enables dual-stack endpoint resolution for service endpoints.
- DualStackEndpointStateEnabled
- // DualStackEndpointStateDisabled disables dual-stack endpoint resolution for endpoints.
- DualStackEndpointStateDisabled
- )
- // GetUseDualStackEndpoint takes a service's EndpointResolverOptions and returns the UseDualStackEndpoint value.
- // Returns boolean false if the provided options does not have a method to retrieve the DualStackEndpointState.
- func GetUseDualStackEndpoint(options ...interface{}) (value DualStackEndpointState, found bool) {
- type iface interface {
- GetUseDualStackEndpoint() DualStackEndpointState
- }
- for _, option := range options {
- if i, ok := option.(iface); ok {
- value = i.GetUseDualStackEndpoint()
- found = true
- break
- }
- }
- return value, found
- }
- // FIPSEndpointState is a constant to describe the FIPS endpoint resolution behavior.
- type FIPSEndpointState uint
- const (
- // FIPSEndpointStateUnset is the default value behavior for FIPS endpoint resolution.
- FIPSEndpointStateUnset FIPSEndpointState = iota
- // FIPSEndpointStateEnabled enables FIPS endpoint resolution for service endpoints.
- FIPSEndpointStateEnabled
- // FIPSEndpointStateDisabled disables FIPS endpoint resolution for endpoints.
- FIPSEndpointStateDisabled
- )
- // GetUseFIPSEndpoint takes a service's EndpointResolverOptions and returns the UseDualStackEndpoint value.
- // Returns boolean false if the provided options does not have a method to retrieve the DualStackEndpointState.
- func GetUseFIPSEndpoint(options ...interface{}) (value FIPSEndpointState, found bool) {
- type iface interface {
- GetUseFIPSEndpoint() FIPSEndpointState
- }
- for _, option := range options {
- if i, ok := option.(iface); ok {
- value = i.GetUseFIPSEndpoint()
- found = true
- break
- }
- }
- return value, found
- }
- // Endpoint represents the endpoint a service client should make API operation
- // calls to.
- //
- // The SDK will automatically resolve these endpoints per API client using an
- // internal endpoint resolvers. If you'd like to provide custom endpoint
- // resolving behavior you can implement the EndpointResolver interface.
- type Endpoint struct {
- // The base URL endpoint the SDK API clients will use to make API calls to.
- // The SDK will suffix URI path and query elements to this endpoint.
- URL string
- // Specifies if the endpoint's hostname can be modified by the SDK's API
- // client.
- //
- // If the hostname is mutable the SDK API clients may modify any part of
- // the hostname based on the requirements of the API, (e.g. adding, or
- // removing content in the hostname). Such as, Amazon S3 API client
- // prefixing "bucketname" to the hostname, or changing the
- // hostname service name component from "s3." to "s3-accesspoint.dualstack."
- // for the dualstack endpoint of an S3 Accesspoint resource.
- //
- // Care should be taken when providing a custom endpoint for an API. If the
- // endpoint hostname is mutable, and the client cannot modify the endpoint
- // correctly, the operation call will most likely fail, or have undefined
- // behavior.
- //
- // If hostname is immutable, the SDK API clients will not modify the
- // hostname of the URL. This may cause the API client not to function
- // correctly if the API requires the operation specific hostname values
- // to be used by the client.
- //
- // This flag does not modify the API client's behavior if this endpoint
- // will be used instead of Endpoint Discovery, or if the endpoint will be
- // used to perform Endpoint Discovery. That behavior is configured via the
- // API Client's Options.
- HostnameImmutable bool
- // The AWS partition the endpoint belongs to.
- PartitionID string
- // The service name that should be used for signing the requests to the
- // endpoint.
- SigningName string
- // The region that should be used for signing the request to the endpoint.
- SigningRegion string
- // The signing method that should be used for signing the requests to the
- // endpoint.
- SigningMethod string
- // The source of the Endpoint. By default, this will be EndpointSourceServiceMetadata.
- // When providing a custom endpoint, you should set the source as EndpointSourceCustom.
- // If source is not provided when providing a custom endpoint, the SDK may not
- // perform required host mutations correctly. Source should be used along with
- // HostnameImmutable property as per the usage requirement.
- Source EndpointSource
- }
- // EndpointSource is the endpoint source type.
- type EndpointSource int
- const (
- // EndpointSourceServiceMetadata denotes service modeled endpoint metadata is used as Endpoint Source.
- EndpointSourceServiceMetadata EndpointSource = iota
- // EndpointSourceCustom denotes endpoint is a custom endpoint. This source should be used when
- // user provides a custom endpoint to be used by the SDK.
- EndpointSourceCustom
- )
- // EndpointNotFoundError is a sentinel error to indicate that the
- // EndpointResolver implementation was unable to resolve an endpoint for the
- // given service and region. Resolvers should use this to indicate that an API
- // client should fallback and attempt to use it's internal default resolver to
- // resolve the endpoint.
- type EndpointNotFoundError struct {
- Err error
- }
- // Error is the error message.
- func (e *EndpointNotFoundError) Error() string {
- return fmt.Sprintf("endpoint not found, %v", e.Err)
- }
- // Unwrap returns the underlying error.
- func (e *EndpointNotFoundError) Unwrap() error {
- return e.Err
- }
- // EndpointResolver is an endpoint resolver that can be used to provide or
- // override an endpoint for the given service and region. API clients will
- // attempt to use the EndpointResolver first to resolve an endpoint if
- // available. If the EndpointResolver returns an EndpointNotFoundError error,
- // API clients will fallback to attempting to resolve the endpoint using its
- // internal default endpoint resolver.
- //
- // Deprecated: See EndpointResolverWithOptions
- type EndpointResolver interface {
- ResolveEndpoint(service, region string) (Endpoint, error)
- }
- // EndpointResolverFunc wraps a function to satisfy the EndpointResolver interface.
- //
- // Deprecated: See EndpointResolverWithOptionsFunc
- type EndpointResolverFunc func(service, region string) (Endpoint, error)
- // ResolveEndpoint calls the wrapped function and returns the results.
- //
- // Deprecated: See EndpointResolverWithOptions.ResolveEndpoint
- func (e EndpointResolverFunc) ResolveEndpoint(service, region string) (Endpoint, error) {
- return e(service, region)
- }
- // EndpointResolverWithOptions is an endpoint resolver that can be used to provide or
- // override an endpoint for the given service, region, and the service client's EndpointOptions. API clients will
- // attempt to use the EndpointResolverWithOptions first to resolve an endpoint if
- // available. If the EndpointResolverWithOptions returns an EndpointNotFoundError error,
- // API clients will fallback to attempting to resolve the endpoint using its
- // internal default endpoint resolver.
- type EndpointResolverWithOptions interface {
- ResolveEndpoint(service, region string, options ...interface{}) (Endpoint, error)
- }
- // EndpointResolverWithOptionsFunc wraps a function to satisfy the EndpointResolverWithOptions interface.
- type EndpointResolverWithOptionsFunc func(service, region string, options ...interface{}) (Endpoint, error)
- // ResolveEndpoint calls the wrapped function and returns the results.
- func (e EndpointResolverWithOptionsFunc) ResolveEndpoint(service, region string, options ...interface{}) (Endpoint, error) {
- return e(service, region, options...)
- }
- // GetDisableHTTPS takes a service's EndpointResolverOptions and returns the DisableHTTPS value.
- // Returns boolean false if the provided options does not have a method to retrieve the DisableHTTPS.
- func GetDisableHTTPS(options ...interface{}) (value bool, found bool) {
- type iface interface {
- GetDisableHTTPS() bool
- }
- for _, option := range options {
- if i, ok := option.(iface); ok {
- value = i.GetDisableHTTPS()
- found = true
- break
- }
- }
- return value, found
- }
- // GetResolvedRegion takes a service's EndpointResolverOptions and returns the ResolvedRegion value.
- // Returns boolean false if the provided options does not have a method to retrieve the ResolvedRegion.
- func GetResolvedRegion(options ...interface{}) (value string, found bool) {
- type iface interface {
- GetResolvedRegion() string
- }
- for _, option := range options {
- if i, ok := option.(iface); ok {
- value = i.GetResolvedRegion()
- found = true
- break
- }
- }
- return value, found
- }
|