Module: Pangea::Resources::Validators::FormatValidators
- Defined in:
- lib/pangea/resources/validators/format_validators.rb
Instance Method Summary collapse
- #terraform_interpolation?(value) ⇒ Boolean
- #valid_base64!(value) ⇒ Object
- #valid_hex!(value, length:, allow_interpolation: true) ⇒ Object
- #valid_json!(value) ⇒ Object
Instance Method Details
#terraform_interpolation?(value) ⇒ Boolean
24 25 26 |
# File 'lib/pangea/resources/validators/format_validators.rb', line 24 def terraform_interpolation?(value) value.is_a?(String) && value.match?(/\A\$\{.+\}\z/) end |
#valid_base64!(value) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/pangea/resources/validators/format_validators.rb', line 44 def valid_base64!(value) unless value.match?(/\A[A-Za-z0-9+\/]*={0,2}\z/) raise ValidationError, "Invalid base64 format" end begin Base64.strict_decode64(value) value rescue ArgumentError raise ValidationError, "Invalid base64 encoding" end end |
#valid_hex!(value, length:, allow_interpolation: true) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/pangea/resources/validators/format_validators.rb', line 28 def valid_hex!(value, length:, allow_interpolation: true) return value if allow_interpolation && terraform_interpolation?(value) unless value.match?(/\A[a-f0-9]{#{length}}\z/i) raise ValidationError, "Expected #{length}-char hex string: #{value}" end value end |
#valid_json!(value) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/pangea/resources/validators/format_validators.rb', line 37 def valid_json!(value) JSON.parse(value) value rescue JSON::ParserError raise ValidationError, "Invalid JSON: #{value[0..50]}..." end |