Class AwsEndpointProviderUtils
-
Method Summary
Modifier and TypeMethodDescriptionstatic Endpoint
addHostPrefix
(Endpoint endpoint, String prefix) Apply the given endpoint prefix to the endpoint.static boolean
True if the theSdkInternalExecutionAttribute.DISABLE_HOST_PREFIX_INJECTION
attribute is present and its value istrue
,false
otherwise.static Boolean
dualStackEnabledBuiltIn
(ExecutionAttributes executionAttributes) static String
endpointBuiltIn
(ExecutionAttributes executionAttributes) Returns the endpoint set on the client.static boolean
True if the theSdkInternalExecutionAttribute.IS_DISCOVERED_ENDPOINT
attribute is present and its value istrue
,false
otherwise.static boolean
True if the theSdkExecutionAttribute.ENDPOINT_OVERRIDDEN
attribute is present and its value istrue
,false
otherwise.static Boolean
fipsEnabledBuiltIn
(ExecutionAttributes executionAttributes) static Region
regionBuiltIn
(ExecutionAttributes executionAttributes) static SdkHttpRequest
setUri
(SdkHttpRequest request, URI clientEndpoint, URI resolvedUri) This sets the request URI to the resolved URI returned by the endpoint provider.
-
Method Details
-
regionBuiltIn
-
dualStackEnabledBuiltIn
-
fipsEnabledBuiltIn
-
endpointBuiltIn
Returns the endpoint set on the client. Note that this strips off the query part of the URI because the endpoint rules library, e.g.ParseURL
will return an exception if the URI it parses has query parameters. -
endpointIsOverridden
True if the theSdkExecutionAttribute.ENDPOINT_OVERRIDDEN
attribute is present and its value istrue
,false
otherwise. -
endpointIsDiscovered
True if the theSdkInternalExecutionAttribute.IS_DISCOVERED_ENDPOINT
attribute is present and its value istrue
,false
otherwise. -
disableHostPrefixInjection
True if the theSdkInternalExecutionAttribute.DISABLE_HOST_PREFIX_INJECTION
attribute is present and its value istrue
,false
otherwise. -
addHostPrefix
Apply the given endpoint prefix to the endpoint. -
setUri
This sets the request URI to the resolved URI returned by the endpoint provider. There are some things to be careful about to make this work properly:If the client endpoint is an endpoint override, it may contain a path. In addition, the request marshaller itself may add components to the path if it's modeled for the operation. Unfortunately,
SdkHttpRequest.encodedPath()
returns the combined path from both the endpoint and the request. There is no way to know, just from the HTTP request object, where the override path ends (if it's even there) and where the request path starts. Additionally, the rule itself may also append other parts to the endpoint override path.To solve this issue, we pass in the endpoint set on the path, which allows us to the strip the path from the endpoint override from the request path, and then correctly combine the paths.
For example, let's suppose the endpoint override on the client is
https://example.com/a
. Then we call an operationFoo()
, that marshalls/c
to the path. The resulting request path is/a/c
. However, we also pass the endpoint to provider as a parameter, and the resolver returnshttps://example.com/a/b
. This method takes care of combining the paths correctly so that the resulting path ishttps://example.com/a/b/c
.
-