lib/jss/validate.rb in ruby-jss-1.0.0b2 vs lib/jss/validate.rb in ruby-jss-1.0.0b6
- old
+ new
@@ -40,29 +40,35 @@
# Validate the format and content of a MAC address
#
# @param val[String] The value to validate
#
+ # @param msg[String] A custom error message when the value is invalid
+ #
# @return [String] The valid value
#
- def self.mac_address(val)
- raise JSS::InvalidDataError, "Not a valid MAC address: '#{val}'" unless val =~ MAC_ADDR_RE
+ def self.mac_address(val, msg = nil)
+ msg ||= "Not a valid MAC address: '#{val}'"
+ raise JSS::InvalidDataError, msg unless val =~ MAC_ADDR_RE
val
end
# Validate the format and content of an IPv4 address
#
# @param val[String] The value to validate
#
+ # @param msg[String] A custom error message when the value is invalid
+ #
# @return [String] The valid value
#
- def self.ip_address(val)
+ def self.ip_address(val, msg = nil)
+ msg ||= "Not a valid IPv4 address: '#{val}'"
ok = true
parts = val.strip.split '.'
ok = false unless parts.size == 4
parts.each { |p| ok = false unless p.jss_integer? && p.to_i < 256 && p.to_i >= 0 }
- raise JSS::InvalidDataError, "Not a valid IPv4 address: '#{val}'" unless ok
+ raise JSS::InvalidDataError, msg unless ok
val
end
# Validate that a value doesn't already exist for a given identifier of a given class
#
@@ -75,15 +81,20 @@
#
# @param identifier[Symbol] One of the keys of an Item of the class's #all Array
#
# @param val[Object] The value to check for uniqueness
#
+ # @param msg[String] A custom error message when the value is invalid
+ #
+ # @param api[JSS::APIConnection] The api connection to use for validation
+ #
# @return [Object] the validated unique value
#
- def self.unique_identifier(klass, identifier, val, api: JSS.api)
+ def self.unique_identifier(klass, identifier, val, msg = nil, api: JSS.api)
+ msg ||= "A #{klass} already exists with #{identifier} '#{val}'"
return val unless klass.all(:refresh, api: api).map { |i| i[identifier] }.include? val
- raise JSS::AlreadyExistsError, "A #{klass} already exists with #{identifier} '#{val}'"
+ raise JSS::AlreadyExistsError, msg
end
# Confirm that the given value is a boolean value, accepting
# strings and symbols and returning real booleans as needed
# Accepts: true, false, 'true', 'false', :true, :false, 'yes', 'no', :yes,
@@ -91,59 +102,51 @@
#
# TODO: use this throughout ruby-jss
#
# @param bool [Boolean,String,Symbol] The value to validate
#
+ # @param msg[String] A custom error message when the value is invalid
+ #
# @return [Boolean] the valid boolean
#
- def self.boolean(bool)
+ def self.boolean(bool, msg = nil)
+ msg ||= 'Value must be boolean true or false'
return bool if JSS::TRUE_FALSE.include? bool
return true if bool.to_s =~ /^(true|yes)$/i
return false if bool.to_s =~ /^(false|no)$/i
- raise JSS::InvalidDataError, 'Value must be boolean true or false'
+ raise JSS::InvalidDataError, msg
end
# Confirm that a value is an integer or a string representation of an
# integer. Return the integer, or raise an error
#
# TODO: use this throughout ruby-jss
#
# @param val[Object] the value to validate
#
+ # @param msg[String] A custom error message when the value is invalid
+ #
# @return [void]
#
- def self.integer(val)
+ def self.integer(val, msg = nil)
+ msg ||= 'Value must be an integer'
val = val.to_i if val.is_a?(String) && val.jss_integer?
- raise JSS::InvalidDataError, 'Value must be an integer' unless val.is_a? Integer
+ raise JSS::InvalidDataError, msg unless val.is_a? Integer
val
end
# validate that the given value is a non-empty string
#
# @param val [Object] the thing to validate
#
+ # @param msg[String] A custom error message when the value is invalid
+ #
# @return [String] the valid non-empty string
#
- def self.non_empty_string(val)
- raise JSS::InvalidDataError, 'value must be a non-empty String' unless val.is_a?(String) && !val.empty?
+ def self.non_empty_string(val, msg = nil)
+ msg ||= 'value must be a non-empty String'
+ raise JSS::InvalidDataError, msg unless val.is_a?(String) && !val.empty?
val
- end
-
- # Confirm that the given value is a boolean value, accepting
- # strings and symbols and returning real booleans as needed
- # Accepts: true, false, 'true', 'false', :true, :false, 'yes', 'no', :yes,
- # or :no (all Strings and Symbols are case insensitive)
- #
- #
- # @param bool [Boolean,String,Symbol] The value to validate
- #
- # @return [Boolean] the valid boolean
- #
- def self.boolean(bool)
- return bool if JSS::TRUE_FALSE.include? bool
- return true if bool.to_s =~ /^(true|yes)$/i
- return false if bool.to_s =~ /^(false|no)$/i
- raise JSS::InvalidDataError, 'Value must be boolean true or false'
end
end # module validate
end # module JSS