From 0a60ca6468e36f06dae48dc30e53dff329e83caf Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Sun, 4 Jul 2021 14:20:54 -0400 Subject: [PATCH] Add repeating category for fetching by hash Fixes #235 --- src/routes/getSkipSegmentsByHash.ts | 6 ++++-- test/cases/getSkipSegmentsByHash.ts | 31 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/routes/getSkipSegmentsByHash.ts b/src/routes/getSkipSegmentsByHash.ts index c75d5eb..318ee24 100644 --- a/src/routes/getSkipSegmentsByHash.ts +++ b/src/routes/getSkipSegmentsByHash.ts @@ -16,8 +16,10 @@ export async function getSkipSegmentsByHash(req: Request, res: Response) { categories = req.query.categories ? JSON.parse(req.query.categories as string) : req.query.category - ? [req.query.category] - : ["sponsor"]; + ? Array.isArray(req.query.category) + ? req.query.category + : [req.query.category] + : ['sponsor']; if (!Array.isArray(categories)) { return res.status(400).send("Categories parameter does not match format requirements."); } diff --git a/test/cases/getSkipSegmentsByHash.ts b/test/cases/getSkipSegmentsByHash.ts index 8625a1d..b5c87c3 100644 --- a/test/cases/getSkipSegmentsByHash.ts +++ b/test/cases/getSkipSegmentsByHash.ts @@ -224,6 +224,37 @@ describe('getSegmentsByHash', () => { .catch(err => done('(post) ' + err)); }); + it('Should be able to get multiple categories with repeating parameters', (done: Done) => { + fetch(getbaseURL() + "/api/skipSegments/fdaff4?&category=sponsor&category=intro") + .then(async res => { + if (res.status !== 200) done("Status code was: " + res.status); + else { + const body = await res.json(); + if (body.length !== 1) done("expected 1 video, got " + body.length); + + const data = body[0].segments; + if (data.length === 2) { + let success = true; + for (const segment of data) { + if ((segment.segment[0] !== 1 || segment.segment[1] !== 10 + || segment.category !== "sponsor" || segment.UUID !== "getSegmentsByHash-0-0") && + (segment.segment[0] !== 20 || segment.segment[1] !== 30 + || segment.category !== "intro" || segment.UUID !== "getSegmentsByHash-0-1")) { + success = false; + break; + } + } + + if (success) done(); + else done("Received incorrect body: " + JSON.stringify(body)); + } else { + done("Received incorrect body: " + JSON.stringify(body)); + } + } + }) + .catch(err => ("Couldn't call endpoint")); + }); + it('Should be able to get specific segments with requiredSegments', (done: Done) => { fetch(getbaseURL() + '/api/skipSegments/d518?requiredSegments=["requiredSegmentVid-2","requiredSegmentVid-3"]') .then(async res => {