Difference between revisions of "Module:Validators/Endpoints/ValidateParameters"
(Function to validate parameters specs.) |
m (Error message adjustment.) |
||
Line 62: | Line 62: | ||
for _, message in ipairs( validationResult.messages ) do | for _, message in ipairs( validationResult.messages ) do | ||
− | local newMessage = ( 'Invalid | + | local newMessage = ( 'Invalid spec for parameter `%s`: %s' ) |
:format( parameter, message ) | :format( parameter, message ) | ||
Revision as of 23:13, 27 December 2023
-- <pre>
local libraryUtil = require( 'libraryUtil' )
local SCHEMA_SPEC = {
allowEmpty = {
type = 'boolean',
required = false,
},
required = {
type = 'boolean',
required = false,
},
default = {
required = false,
}
}
local function validateParameterSchema( parameterSchema, SCHEMA_SPEC )
local messages = {}
for key, value in pairs( parameterSchema ) do
if not SCHEMA_SPEC[ key ] then
local message = ( 'Invalid schema key `%s`!' ):format( key )
table.insert( messages, message )
end
end
for key, value in pairs( SCHEMA_SPEC ) do
local parameterDescription = parameterSchema[ key ]
if not parameterDescription and value.required then
local message = ( 'Missing required option `%s`!' )
:format( key )
table.insert( messages, message )
end
local schemaKeyType = type( parameterDescription )
if parameterDescription and value.type and schemaKeyType ~= value.type then
local message = ( 'Invalid type `%s` for key `%s`! Valid type is `%s`.' )
:format( schemaKeyType, key, value.type )
table.insert( messages, message )
end
end
return {
messages = messages,
isValid = not messages[ 1 ],
}
end
local function validateParameters( parameters )
libraryUtil.checkType( 'validateParameters', 1, parameters, 'table' )
local messages = {}
for parameter, schema in pairs( parameters ) do
local validationResult = validateParameterSchema( schema, SCHEMA_SPEC )
for _, message in ipairs( validationResult.messages ) do
local newMessage = ( 'Invalid spec for parameter `%s`: %s' )
:format( parameter, message )
table.insert( messages, newMessage )
end
end
return {
messages = messages,
isValid = not messages[ 1 ],
}
end
return validateParameters
-- </pre>