lib/aws-sdk-s3control/plugins/dualstack.rb in aws-sdk-s3control-1.26.0 vs lib/aws-sdk-s3control/plugins/dualstack.rb in aws-sdk-s3control-1.27.0

- old
+ new

@@ -14,48 +14,49 @@ for all operations. DOCS def add_handlers(handlers, config) handlers.add(OptionHandler, step: :initialize) - handlers.add(DualstackHandler, step: :build, priority: 2) + handlers.add(DualstackHandler, step: :build, priority: 11) end # @api private class OptionHandler < Seahorse::Client::Handler def call(context) + # Support client configuration and per-operation configuration if context.params.is_a?(Hash) dualstack = context.params.delete(:use_dualstack_endpoint) end dualstack = context.config.use_dualstack_endpoint if dualstack.nil? + # Raise if :endpoint and dualstack are both provided + if dualstack && !context.config.regional_endpoint + raise ArgumentError, + 'Cannot use both :use_dualstack_endpoint and :endpoint' + end context[:use_dualstack_endpoint] = dualstack @handler.call(context) end end # @api private class DualstackHandler < Seahorse::Client::Handler def call(context) - apply_dualstack_endpoint(context) if use_dualstack_endpoint?(context) + if context.config.regional_endpoint && context[:use_dualstack_endpoint] + apply_dualstack_endpoint(context) + end @handler.call(context) end private def apply_dualstack_endpoint(context) - bucket_name = context.params[:bucket] region = context.config.region - dns_suffix = Aws::Partitions::EndpointProvider.dns_suffix_for( - region - ) + dns_suffix = Aws::Partitions::EndpointProvider.dns_suffix_for(region) host = "s3-control.dualstack.#{region}.#{dns_suffix}" endpoint = URI.parse(context.http_request.endpoint.to_s) endpoint.scheme = context.http_request.endpoint.scheme endpoint.port = context.http_request.endpoint.port endpoint.host = host context.http_request.endpoint = endpoint.to_s - end - - def use_dualstack_endpoint?(context) - context[:use_dualstack_endpoint] end end end end