Add parameter to fetch specific segments

This commit is contained in:
Ajay Ramachandran
2021-07-04 14:15:17 -04:00
parent be277d0218
commit 990572ff31
5 changed files with 121 additions and 12 deletions

View File

@@ -1,7 +1,7 @@
import {hashPrefixTester} from '../utils/hashPrefixTester';
import {getSegmentsByHash} from './getSkipSegments';
import {Request, Response} from 'express';
import { Category, Service, VideoIDHash } from '../types/segments.model';
import { Category, SegmentUUID, Service, VideoIDHash } from '../types/segments.model';
export async function getSkipSegmentsByHash(req: Request, res: Response) {
let hashPrefix = req.params.prefix as VideoIDHash;
@@ -21,11 +21,26 @@ export async function getSkipSegmentsByHash(req: Request, res: Response) {
if (!Array.isArray(categories)) {
return res.status(400).send("Categories parameter does not match format requirements.");
}
}
catch(error) {
} catch(error) {
return res.status(400).send("Bad parameter: categories (invalid JSON)");
}
let requiredSegments: SegmentUUID[] = [];
try {
requiredSegments = req.query.requiredSegments
? JSON.parse(req.query.requiredSegments as string)
: req.query.requiredSegment
? Array.isArray(req.query.requiredSegment)
? req.query.requiredSegment
: [req.query.requiredSegment]
: [];
if (!Array.isArray(requiredSegments)) {
return res.status(400).send("requiredSegments parameter does not match format requirements.");
}
} catch(error) {
return res.status(400).send("Bad parameter: requiredSegments (invalid JSON)");
}
let service: Service = req.query.service ?? req.body.service ?? Service.YouTube;
if (!Object.values(Service).some((val) => val == service)) {
service = Service.YouTube;
@@ -35,7 +50,7 @@ export async function getSkipSegmentsByHash(req: Request, res: Response) {
categories = categories.filter((item: any) => typeof item === "string");
// Get all video id's that match hash prefix
const segments = await getSegmentsByHash(req, hashPrefix, categories, service);
const segments = await getSegmentsByHash(req, hashPrefix, categories, requiredSegments, service);
if (!segments) return res.status(404).json([]);