class Aws::S3::Plugins::Accelerate::AccelerateHandler

@api private

Public Instance Methods

call(context) click to toggle source
# File lib/aws-sdk-s3/plugins/accelerate.rb, line 56
def call(context)
  if context.config.regional_endpoint && context[:use_accelerate_endpoint]
    dualstack = !!context[:use_dualstack_endpoint]
    use_accelerate_endpoint(context, dualstack)
  end
  @handler.call(context)
end

Private Instance Methods

use_accelerate_endpoint(context, dualstack) click to toggle source
# File lib/aws-sdk-s3/plugins/accelerate.rb, line 66
def use_accelerate_endpoint(context, dualstack)
  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' if dualstack}.amazonaws.com"
  context.http_request.endpoint = endpoint.to_s
  # s3 accelerate endpoint doesn't work with 'expect' header
  context.http_request.headers.delete('expect')
end
validate_bucket_name!(bucket_name) click to toggle source
# File lib/aws-sdk-s3/plugins/accelerate.rb, line 79
def validate_bucket_name!(bucket_name)
  unless BucketDns.dns_compatible?(bucket_name, _ssl = true)
    raise ArgumentError,
          'Unable to use `use_accelerate_endpoint: true` on buckets '\
          'with non-DNS compatible names.'
  end
end