+ return res.fail({
+ status: HttpStatusCode.NOT_IMPLEMENTED_501,
+ message: 'Requested format is not implemented on server.',
+ data: {
+ format: req.query.format
+ }
+ })
+ }
+
+ const url = req.query.url as string
+
+ let urlPath: string
+
+ try {
+ urlPath = new URL(url).pathname
+ } catch (err) {
+ return res.fail({
+ status: HttpStatusCode.BAD_REQUEST_400,
+ message: err.message,
+ data: {
+ url
+ }
+ })
+ }
+
+ const isPlaylist = startPlaylistURLs.some(u => url.startsWith(u))
+ const isVideo = isPlaylist ? false : startVideoURLs.some(u => url.startsWith(u))
+
+ const startIsOk = isVideo || isPlaylist
+
+ const parts = urlPath.split('/')
+
+ if (startIsOk === false || parts.length === 0) {
+ return res.fail({
+ status: HttpStatusCode.BAD_REQUEST_400,
+ message: 'Invalid url.',
+ data: {
+ url
+ }
+ })
+ }
+
+ const elementId = toCompleteUUID(parts.pop())
+ if (isIdOrUUIDValid(elementId) === false) {
+ return res.fail({ message: 'Invalid video or playlist id.' })