Class: S3BucketNameValidator
- Inherits:
-
ActiveModel::EachValidator
- Object
- ActiveModel::EachValidator
- S3BucketNameValidator
- Defined in:
- lib/activerecord/s3/bucket/name/validator.rb
Overview
Usage in a model:
validates :bucket_name, s3_bucket_name: { type: :general_purpose }
Options:
:type => :general_purpose (default), :directory, :table, or :vector
:namespace => :account_regional for general-purpose account regional bucket names
:transfer_acceleration => true to forbid periods for TA buckets
Constant Summary collapse
- RESERVED_PREFIXES_GENERAL =
%w[xn-- sthree- amzn-s3-demo-].freeze
- RESERVED_SUFFIXES_GENERAL =
%w[-s3alias --ol-s3 .mrap --x-s3 --table-s3].freeze
- RESERVED_PREFIXES_TABLE =
%w[xn-- sthree- amzn-s3-demo- aws].freeze
- RESERVED_SUFFIXES_TABLE =
%w[-s3alias --ol-s3 --x-s3 --table-s3].freeze
Instance Method Summary collapse
Instance Method Details
#validate_each(record, attribute, value) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/activerecord/s3/bucket/name/validator.rb', line 43 def validate_each(record, attribute, value) type = ([:type] || :general_purpose).to_sym return if blank_ok?(value) valid = case type when :general_purpose validate_general_purpose( value, transfer_acceleration: !![:transfer_acceleration], namespace: [:namespace] ) when :directory then validate_directory_bucket(value) when :table then validate_table_bucket(value) when :vector then validate_vector_bucket(value) else record.errors.add(attribute, :invalid, message: "unknown bucket type: #{type}") false end unless valid error_key = if type == :general_purpose && [:transfer_acceleration] && value.include?(".") :s3_bucket_name_invalid_transfer_acceleration else case type when :general_purpose then :s3_bucket_name_invalid_general when :directory then :s3_bucket_name_invalid_directory when :table then :s3_bucket_name_invalid_table when :vector then :s3_bucket_name_invalid_vector else :s3_bucket_name_invalid end end record.errors.add(attribute, error_key) end end |