1 package configsources
2 3 import (
4 "context"
5 )
6 7 // ServiceBaseEndpointProvider is needed to search for all providers
8 // that provide a configured service endpoint
9 type ServiceBaseEndpointProvider interface {
10 GetServiceBaseEndpoint(ctx context.Context, sdkID string) (string, bool, error)
11 }
12 13 // IgnoreConfiguredEndpointsProvider is needed to search for all providers
14 // that provide a flag to disable configured endpoints.
15 //
16 // Currently duplicated from github.com/aws/aws-sdk-go-v2/config because
17 // service packages cannot import github.com/aws/aws-sdk-go-v2/config
18 // due to result import cycle error.
19 type IgnoreConfiguredEndpointsProvider interface {
20 GetIgnoreConfiguredEndpoints(ctx context.Context) (bool, bool, error)
21 }
22 23 // GetIgnoreConfiguredEndpoints is used in knowing when to disable configured
24 // endpoints feature.
25 //
26 // Currently duplicated from github.com/aws/aws-sdk-go-v2/config because
27 // service packages cannot import github.com/aws/aws-sdk-go-v2/config
28 // due to result import cycle error.
29 func GetIgnoreConfiguredEndpoints(ctx context.Context, configs []interface{}) (value bool, found bool, err error) {
30 for _, cfg := range configs {
31 if p, ok := cfg.(IgnoreConfiguredEndpointsProvider); ok {
32 value, found, err = p.GetIgnoreConfiguredEndpoints(ctx)
33 if err != nil || found {
34 break
35 }
36 }
37 }
38 return
39 }
40 41 // ResolveServiceBaseEndpoint is used to retrieve service endpoints from configured sources
42 // while allowing for configured endpoints to be disabled
43 func ResolveServiceBaseEndpoint(ctx context.Context, sdkID string, configs []interface{}) (value string, found bool, err error) {
44 if val, found, _ := GetIgnoreConfiguredEndpoints(ctx, configs); found && val {
45 return "", false, nil
46 }
47 48 for _, cs := range configs {
49 if p, ok := cs.(ServiceBaseEndpointProvider); ok {
50 value, found, err = p.GetServiceBaseEndpoint(context.Background(), sdkID)
51 if err != nil || found {
52 break
53 }
54 }
55 }
56 return
57 }
58