unify osc and http validateSubscriptionEntry

This commit is contained in:
arc-alex
2023-11-04 20:32:30 +01:00
parent 563ea92a3b
commit 2b87f72acb
3 changed files with 11 additions and 28 deletions
@@ -1,5 +1,5 @@
import { body, check, validationResult } from 'express-validator';
import { validateOscObject, validateOscSubscriptionEntry } from '../utils/parserFunctions.js';
import { validateOscObject, validateSubscriptionEntry } from '../utils/parserFunctions.js';
/**
* @description Validates object for POST /ontime/views
@@ -93,25 +93,25 @@ export const validateOSC = [
/**
* @description Validates object for POST /ontime/osc-subscriptions
*/
export const validateOscSubscription = [
export const validateSubscription = [
body('onLoad')
.isArray()
.custom((value) => validateOscSubscriptionEntry(value)),
.custom((value) => validateSubscriptionEntry(value)),
body('onStart')
.isArray()
.custom((value) => validateOscSubscriptionEntry(value)),
.custom((value) => validateSubscriptionEntry(value)),
body('onPause')
.isArray()
.custom((value) => validateOscSubscriptionEntry(value)),
.custom((value) => validateSubscriptionEntry(value)),
body('onStop')
.isArray()
.custom((value) => validateOscSubscriptionEntry(value)),
.custom((value) => validateSubscriptionEntry(value)),
body('onUpdate')
.isArray()
.custom((value) => validateOscSubscriptionEntry(value)),
.custom((value) => validateSubscriptionEntry(value)),
body('onFinish')
.isArray()
.custom((value) => validateOscSubscriptionEntry(value)),
.custom((value) => validateSubscriptionEntry(value)),
(req, res, next) => {
const errors = validationResult(req);
if (!errors.isEmpty()) return res.status(422).json({ errors: errors.array() });
+2 -2
View File
@@ -22,7 +22,7 @@ import {
import {
validateAliases,
validateOSC,
validateOscSubscription,
validateSubscription,
validateSettings,
validateUserFields,
viewValidator,
@@ -74,7 +74,7 @@ router.get('/osc', getOSC);
router.post('/osc', validateOSC, postOSC);
// create route between controller and '/ontime/osc-subscriptions' endpoint
router.post('/osc-subscriptions', validateOscSubscription, postOscSubscriptions);
router.post('/osc-subscriptions', validateSubscription, postOscSubscriptions);
// create route between controller and '/ontime/new' endpoint
router.post('/new', projectSanitiser, postNew);
+1 -18
View File
@@ -191,7 +191,7 @@ export const parseViewSettings = (data, enforce): ViewSettings => {
* Parses and validates subscription entry
* @param data
*/
export const validateOscSubscriptionEntry = (data: SubscriptionOptions): boolean => {
export const validateSubscriptionEntry = (data: SubscriptionOptions): boolean => {
for (const subscription in data) {
if (typeof data[subscription].message !== 'string' || typeof data[subscription].enabled !== 'boolean') {
return false;
@@ -253,19 +253,6 @@ export const parseOsc = (
} else return {};
};
/**
* Parses and validates subscription entry
* @param data
*/
export const validateHttpSubscriptionEntry = (data: SubscriptionOptions): boolean => {
for (const subscription in data) {
if (typeof data[subscription].message !== 'string' || typeof data[subscription].enabled !== 'boolean') {
return false;
}
}
return true;
};
/**
* Parses and validates subscription object
* @param data
@@ -309,10 +296,6 @@ export const parseHttp = (
: dbModel.http.subscriptions;
return {
portIn: loadedConfig.portIn ?? dbModel.http.portIn,
portOut: loadedConfig.portOut ?? dbModel.http.portOut,
targetIP: loadedConfig.targetIP ?? dbModel.http.targetIP,
enabledIn: loadedConfig.enabledIn ?? dbModel.http.enabledIn,
enabledOut: loadedConfig.enabledOut ?? dbModel.http.enabledOut,
subscriptions: validatedSubscriptions,
};