/*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 .*/ //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" } }) ); }