config.go

 1package configsources
 2
 3import (
 4	"context"
 5	"github.com/aws/aws-sdk-go-v2/aws"
 6)
 7
 8// EnableEndpointDiscoveryProvider is an interface for retrieving external configuration value
 9// for Enable Endpoint Discovery
10type EnableEndpointDiscoveryProvider interface {
11	GetEnableEndpointDiscovery(ctx context.Context) (value aws.EndpointDiscoveryEnableState, found bool, err error)
12}
13
14// ResolveEnableEndpointDiscovery extracts the first instance of a EnableEndpointDiscoveryProvider from the config slice.
15// Additionally returns a aws.EndpointDiscoveryEnableState to indicate if the value was found in provided configs,
16// and error if one is encountered.
17func ResolveEnableEndpointDiscovery(ctx context.Context, configs []interface{}) (value aws.EndpointDiscoveryEnableState, found bool, err error) {
18	for _, cfg := range configs {
19		if p, ok := cfg.(EnableEndpointDiscoveryProvider); ok {
20			value, found, err = p.GetEnableEndpointDiscovery(ctx)
21			if err != nil || found {
22				break
23			}
24		}
25	}
26	return
27}
28
29// UseDualStackEndpointProvider is an interface for retrieving external configuration values for UseDualStackEndpoint
30type UseDualStackEndpointProvider interface {
31	GetUseDualStackEndpoint(context.Context) (value aws.DualStackEndpointState, found bool, err error)
32}
33
34// ResolveUseDualStackEndpoint extracts the first instance of a UseDualStackEndpoint from the config slice.
35// Additionally returns a boolean to indicate if the value was found in provided configs, and error if one is encountered.
36func ResolveUseDualStackEndpoint(ctx context.Context, configs []interface{}) (value aws.DualStackEndpointState, found bool, err error) {
37	for _, cfg := range configs {
38		if p, ok := cfg.(UseDualStackEndpointProvider); ok {
39			value, found, err = p.GetUseDualStackEndpoint(ctx)
40			if err != nil || found {
41				break
42			}
43		}
44	}
45	return
46}
47
48// UseFIPSEndpointProvider is an interface for retrieving external configuration values for UseFIPSEndpoint
49type UseFIPSEndpointProvider interface {
50	GetUseFIPSEndpoint(context.Context) (value aws.FIPSEndpointState, found bool, err error)
51}
52
53// ResolveUseFIPSEndpoint extracts the first instance of a UseFIPSEndpointProvider from the config slice.
54// Additionally, returns a boolean to indicate if the value was found in provided configs, and error if one is encountered.
55func ResolveUseFIPSEndpoint(ctx context.Context, configs []interface{}) (value aws.FIPSEndpointState, found bool, err error) {
56	for _, cfg := range configs {
57		if p, ok := cfg.(UseFIPSEndpointProvider); ok {
58			value, found, err = p.GetUseFIPSEndpoint(ctx)
59			if err != nil || found {
60				break
61			}
62		}
63	}
64	return
65}