Fix getSkipSegmentsByHash requires valid json

The categories parameter has to be a valid array with strings in JSON format
This commit is contained in:
Nanobyte
2021-02-25 19:08:29 +01:00
parent e86f442249
commit 09c9b25178
2 changed files with 20 additions and 8 deletions

View File

@@ -10,11 +10,23 @@ export async function getSkipSegmentsByHash(req: Request, res: Response) {
return;
}
const categories: Category[] = req.query.categories
? JSON.parse(req.query.categories as string)
: req.query.category
? [req.query.category]
: ['sponsor'];
let categories: Category[] = [];
try {
categories = req.query.categories
? JSON.parse(req.query.categories as string)
: req.query.category
? [req.query.category]
: ["sponsor"];
if (!Array.isArray(categories)) {
return res.status(400).send("Categories parameter does not match format requirements.");
}
}
catch(error) {
return res.status(400).send("Bad parameter: categories (invalid JSON)");
}
// filter out none string elements, only flat array with strings is valid
categories = categories.filter((item: any) => typeof item === "string");
// Get all video id's that match hash prefix
const segments = getSegmentsByHash(req, hashPrefix, categories);