From 418d092afa81e2c8fe8ac6838fc4b5eb0af6a782 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 26 Feb 2019 10:55:40 +0100 Subject: Playlist server API --- server/controllers/api/video-channel.ts | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'server/controllers/api/video-channel.ts') diff --git a/server/controllers/api/video-channel.ts b/server/controllers/api/video-channel.ts index db7602139..534cc8d7b 100644 --- a/server/controllers/api/video-channel.ts +++ b/server/controllers/api/video-channel.ts @@ -12,7 +12,8 @@ import { videoChannelsAddValidator, videoChannelsRemoveValidator, videoChannelsSortValidator, - videoChannelsUpdateValidator + videoChannelsUpdateValidator, + videoPlaylistsSortValidator } from '../../middlewares' import { VideoChannelModel } from '../../models/video/video-channel' import { videoChannelsNameWithHostValidator, videosSortValidator } from '../../middlewares/validators' @@ -31,6 +32,7 @@ import { auditLoggerFactory, getAuditIdFromRes, VideoChannelAuditView } from '.. import { resetSequelizeInstance } from '../../helpers/database-utils' import { UserModel } from '../../models/account/user' import { JobQueue } from '../../lib/job-queue' +import { VideoPlaylistModel } from '../../models/video/video-playlist' const auditLogger = auditLoggerFactory('channels') const reqAvatarFile = createReqFiles([ 'avatarfile' ], MIMETYPES.IMAGE.MIMETYPE_EXT, { avatarfile: CONFIG.STORAGE.TMP_DIR }) @@ -77,6 +79,15 @@ videoChannelRouter.get('/:nameWithHost', asyncMiddleware(getVideoChannel) ) +videoChannelRouter.get('/:nameWithHost/video-playlists', + asyncMiddleware(videoChannelsNameWithHostValidator), + paginationValidator, + videoPlaylistsSortValidator, + setDefaultSort, + setDefaultPagination, + asyncMiddleware(listVideoChannelPlaylists) +) + videoChannelRouter.get('/:nameWithHost/videos', asyncMiddleware(videoChannelsNameWithHostValidator), paginationValidator, @@ -206,6 +217,20 @@ async function getVideoChannel (req: express.Request, res: express.Response, nex return res.json(videoChannelWithVideos.toFormattedJSON()) } +async function listVideoChannelPlaylists (req: express.Request, res: express.Response) { + const serverActor = await getServerActor() + + const resultList = await VideoPlaylistModel.listForApi({ + followerActorId: serverActor.id, + start: req.query.start, + count: req.query.count, + sort: req.query.sort, + videoChannelId: res.locals.videoChannel.id + }) + + return res.json(getFormattedObjects(resultList.data, resultList.total)) +} + async function listVideoChannelVideos (req: express.Request, res: express.Response, next: express.NextFunction) { const videoChannelInstance: VideoChannelModel = res.locals.videoChannel const followerActorId = isUserAbleToSearchRemoteURI(res) ? null : undefined -- cgit v1.2.3