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