class Aws::Plugins::S3Accelerate::AccelerateHandler

@api private

Public Instance Methods

call(context) click to toggle source
# File lib/aws-sdk-core/plugins/s3_accelerate.rb, line 41
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

Private Instance Methods

use_accelerate_endpoint(context) click to toggle source
# File lib/aws-sdk-core/plugins/s3_accelerate.rb, line 54
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
use_combined_accelerate_dualstack_endpoint(context) click to toggle source
# File lib/aws-sdk-core/plugins/s3_accelerate.rb, line 64
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
validate_bucket_name!(bucket_name) click to toggle source
# File lib/aws-sdk-core/plugins/s3_accelerate.rb, line 74
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