class Aws::S3::Plugins::BucketNameRestrictions::Handler

Public Instance Methods

call(context) click to toggle source

Useful because Aws::S3::Errors::SignatureDoesNotMatch is thrown when passed a bucket with a forward slash. Instead provide a more helpful error. Ideally should not be a plugin?

# File lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb, line 13
def call(context)
  bucket_member = _bucket_member(context.operation.input.shape)
  if bucket_member && (bucket = context.params[bucket_member])
    _resolved_region, arn = ARN.resolve_arn!(
      bucket,
      context.config.region,
      context.config.s3_use_arn_region
    )
    if !arn && bucket.include?('/')
      raise ArgumentError,
            'bucket name must not contain a forward-slash (/)'
    end
  end
  @handler.call(context)
end

Private Instance Methods

_bucket_member(input) click to toggle source
# File lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb, line 31
def _bucket_member(input)
  input.members.each do |member, ref|
    return member if ref.shape.name == 'BucketName'
  end
  nil
end