endpoints.go (1947B)
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 }