1 import * as express from 'express'
3 import { database as db } from '../../../initializers'
4 import { logger, getFormattedObjects } from '../../../helpers'
8 videosBlacklistAddValidator,
9 videosBlacklistRemoveValidator,
11 blacklistSortValidator,
15 } from '../../../middlewares'
16 import { BlacklistedVideoInstance } from '../../../models'
17 import { BlacklistedVideo } from '../../../../shared'
19 const blacklistRouter = express.Router()
21 blacklistRouter.post('/:videoId/blacklist',
24 videosBlacklistAddValidator,
25 asyncMiddleware(addVideoToBlacklist)
28 blacklistRouter.get('/blacklist',
32 blacklistSortValidator,
35 asyncMiddleware(listBlacklist)
38 blacklistRouter.delete('/:videoId/blacklist',
41 videosBlacklistRemoveValidator,
42 asyncMiddleware(removeVideoFromBlacklistController)
45 // ---------------------------------------------------------------------------
51 // ---------------------------------------------------------------------------
53 async function addVideoToBlacklist (req: express.Request, res: express.Response, next: express.NextFunction) {
54 const videoInstance = res.locals.video
57 videoId: videoInstance.id
60 await db.BlacklistedVideo.create(toCreate)
61 return res.type('json').status(204).end()
64 async function listBlacklist (req: express.Request, res: express.Response, next: express.NextFunction) {
65 const resultList = await db.BlacklistedVideo.listForApi(req.query.start, req.query.count, req.query.sort)
67 return res.json(getFormattedObjects<BlacklistedVideo, BlacklistedVideoInstance>(resultList.data, resultList.total))
70 async function removeVideoFromBlacklistController (req: express.Request, res: express.Response, next: express.NextFunction) {
71 const blacklistedVideo = res.locals.blacklistedVideo as BlacklistedVideoInstance
74 await blacklistedVideo.destroy()
76 logger.info('Video %s removed from blacklist.', res.locals.video.uuid)
78 return res.sendStatus(204)
80 logger.error('Some error while removing video %s from blacklist.', res.locals.video.uuid, err)