canopy/src/validators/channelValidator.js

91 lines
2.6 KiB
JavaScript

/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024-2025 Rainbownapkin and the TTN Community
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
//NPM Imports
const { checkSchema, checkExact } = require('express-validator');
//local imports
const accountValidator = require('./accountValidator');
module.exports = {
settingsMap: () => checkExact(checkSchema({
'settingsMap.hidden': {
optional: true,
isBoolean: true,
} }))
}
module.exports.name = function(field = 'name'){
return checkSchema({
[field]: {
escape: true,
isAlphanumeric: {
errorMessage: "Channel names must be alphanumeric."
},
isLength: {
options: {
min: 1,
max: 50
},
errorMessage: "Channel names must be between 1 and 50 characters."
},
trim: true
}
});
}
module.exports.description = function(field = 'description'){
return checkSchema({
[field]:{
escape: true,
trim: true,
isLength: {
options: {
min: 1,
max: 1000
},
errorMessage: "Description must be between 1 and 1000 characters."
},
}
});
}
module.exports.thumbnail = function(field = 'thumbnail'){
return accountValidator.img(field);
}
module.exports.rank = function(field = 'rank'){
return accountValidator.rank(field);
}
module.exports.settingsMap = function(){
return checkExact(
checkSchema({
'settingsMap.hidden': {
optional: true,
isBoolean: true,
errorMessage: "Bad channel settings map."
},
'settingsMap.streamURL': {
optional: true,
isURL: true,
errorMessage: "Invalid Stream URL"
}
})
);
}