// Validate validates a config value against this rule. func (b *BoolRule) Validate(cv ctypes.ConfigValue) error { // Check that type is correct if cv.Type() != "bool" { return wrongType(b.key, cv.Type(), "bool") } return nil }
// getConfigItemValue returns value of configuration item func getConfigItemValue(item ctypes.ConfigValue) (interface{}, error) { var value interface{} switch item.Type() { case "string": value = item.(ctypes.ConfigValueStr).Value break case "float": value = item.(ctypes.ConfigValueFloat).Value break case "integer": value = item.(ctypes.ConfigValueInt).Value break case "bool": value = item.(ctypes.ConfigValueBool).Value break default: return nil, fmt.Errorf("Unsupported type of configuration item, type=%v", item.Type()) } return value, nil }
// Validates a config value against this rule. func (s *StringRule) Validate(cv ctypes.ConfigValue) error { // Check that type is correct if cv.Type() != "string" { return wrongType(s.key, cv.Type(), "string") } return nil }
// Validate Validates a config value against this rule. func (f *FloatRule) Validate(cv ctypes.ConfigValue) error { // Check that type is correct if cv.Type() != FloatType { return wrongType(f.key, cv.Type(), FloatType) } // Check minimum. Type should be safe now because of the check above. if f.minimum != nil && cv.(ctypes.ConfigValueFloat).Value < *f.minimum { return errors.New(fmt.Sprintf("value is under minimum (%s value %f < %f)", f.key, cv.(ctypes.ConfigValueFloat).Value, *f.minimum)) } // Check maximum. Type should be safe now because of the check above. if f.maximum != nil && cv.(ctypes.ConfigValueFloat).Value > *f.maximum { return errors.New(fmt.Sprintf("value is over maximum (%s value %f > %f)", f.key, cv.(ctypes.ConfigValueFloat).Value, *f.maximum)) } return nil }
// Validate Validates a config value against this rule. func (i *IntRule) Validate(cv ctypes.ConfigValue) error { // Check that type is correct // when unmarshalling JSON numbers are converted to floats which is the reason // we are checking for integer below. // http://golang.org/pkg/encoding/json/#Marshal if cv.Type() != "integer" && cv.Type() != "float" { return wrongType(i.key, cv.Type(), "integer") } // Check minimum. Type should be safe now because of the check above. if i.minimum != nil && cv.(ctypes.ConfigValueInt).Value < *i.minimum { return errors.New(fmt.Sprintf("value is under minimum (%s value %d < %d)", i.key, cv.(ctypes.ConfigValueInt).Value, *i.minimum)) } // Check maximum. Type should be safe now because of the check above. if i.maximum != nil && cv.(ctypes.ConfigValueInt).Value > *i.maximum { return errors.New(fmt.Sprintf("value is over maximum (%s value %d > %d)", i.key, cv.(ctypes.ConfigValueInt).Value, *i.maximum)) } return nil }