class Aws::Plugins::S3Dualstack::DualstackHandler
@api private
def apply_dualstack_endpoint(context)
def apply_dualstack_endpoint(context) bucket_name = context.params[:bucket] region = context.config.region force_path_style = context.config.force_path_style dns_suffix = EndpointProvider.dns_suffix_for(region) if use_bucket_dns?(bucket_name, context) host = "#{bucket_name}.s3.dualstack.#{region}.#{dns_suffix}" else host = "s3.dualstack.#{region}.#{dns_suffix}" end 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 call(context)
def call(context) apply_dualstack_endpoint(context) if use_dualstack_endpoint?(context) @handler.call(context) end
def use_bucket_dns?(bucket_name, context)
def use_bucket_dns?(bucket_name, context) ssl = context.http_request.endpoint.scheme == "https" bucket_name && S3BucketDns.dns_compatible?(bucket_name, ssl) && !context.config.force_path_style end
def use_dualstack_endpoint?(context)
def use_dualstack_endpoint?(context) context[:use_dualstack_endpoint] && !context[:use_accelerate_endpoint] end