class Aws::Plugins::S3Accelerate::AccelerateHandler

@api private

def call(context)

def call(context)
  if context[:use_accelerate_endpoint]
    if context[:use_dualstack_endpoint]
      use_combined_accelerate_dualstack_endpoint(context)
    else
      use_accelerate_endpoint(context)
    end
  end
  @handler.call(context)
end

def use_accelerate_endpoint(context)

def use_accelerate_endpoint(context)
  bucket_name = context.params[:bucket]
  validate_bucket_name!(bucket_name)
  endpoint = URI.parse(context.http_request.endpoint.to_s)
  endpoint.scheme = 'https'
  endpoint.port = 443
  endpoint.host = "#{bucket_name}.s3-accelerate.amazonaws.com"
  context.http_request.endpoint = endpoint.to_s
end

def use_combined_accelerate_dualstack_endpoint(context)

def use_combined_accelerate_dualstack_endpoint(context)
  bucket_name = context.params[:bucket]
  validate_bucket_name!(bucket_name)
  endpoint = URI.parse(context.http_request.endpoint.to_s)
  endpoint.scheme = 'https'
  endpoint.port = 443
  endpoint.host = "#{bucket_name}.s3-accelerate.dualstack.amazonaws.com"
  context.http_request.endpoint = endpoint.to_s
end

def validate_bucket_name!(bucket_name)

def validate_bucket_name!(bucket_name)
  unless S3BucketDns.dns_compatible?(bucket_name, ssl = true)
    msg = "unable to use `accelerate: true` on buckets with "
    msg << "non-DNS compatible names"
    raise ArgumentError, msg
  end
  if bucket_name.include?('.')
    msg = "unable to use `accelerate: true` on buckets with dots"
    msg << "in their name: #{bucket_name.inspect}"
    raise ArgumentError, msg
  end
end