Module: Pangea::Resources::Validators::FormatValidators

Defined in:
lib/pangea/resources/validators/format_validators.rb

Instance Method Summary collapse

Instance Method Details

#terraform_interpolation?(value) ⇒ Boolean

Returns:

  • (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