X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fvideos%2Fblacklist.ts;h=c9087fd97ed744caece8c2ae835d9e02ce017eda;hb=4cb6d4578893db310297d7e118ce2fb7ecb952a3;hp=66311598ecf4996437aebf065bef9e2c5238fd35;hpb=35bf0c83c80f59ca79f4b84fac8700f17adeb22d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/videos/blacklist.ts b/server/controllers/api/videos/blacklist.ts index 66311598e..c9087fd97 100644 --- a/server/controllers/api/videos/blacklist.ts +++ b/server/controllers/api/videos/blacklist.ts @@ -1,44 +1,37 @@ import * as express from 'express' - -import { database as db } from '../../../initializers' -import { logger, getFormattedObjects } from '../../../helpers' +import { BlacklistedVideo, UserRight } from '../../../../shared' +import { logger } from '../../../helpers/logger' +import { getFormattedObjects } from '../../../helpers/utils' import { - authenticate, - ensureIsAdmin, - videosBlacklistAddValidator, - videosBlacklistRemoveValidator, - paginationValidator, - blacklistSortValidator, - setBlacklistSort, - setPagination + asyncMiddleware, authenticate, blacklistSortValidator, ensureUserHasRight, paginationValidator, setBlacklistSort, setPagination, + videosBlacklistAddValidator, videosBlacklistRemoveValidator } from '../../../middlewares' -import { BlacklistedVideoInstance } from '../../../models' -import { BlacklistedVideo } from '../../../../shared' +import { VideoBlacklistModel } from '../../../models/video/video-blacklist' const blacklistRouter = express.Router() blacklistRouter.post('/:videoId/blacklist', authenticate, - ensureIsAdmin, - videosBlacklistAddValidator, - addVideoToBlacklist + ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST), + asyncMiddleware(videosBlacklistAddValidator), + asyncMiddleware(addVideoToBlacklist) ) blacklistRouter.get('/blacklist', authenticate, - ensureIsAdmin, + ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST), paginationValidator, blacklistSortValidator, setBlacklistSort, setPagination, - listBlacklist + asyncMiddleware(listBlacklist) ) blacklistRouter.delete('/:videoId/blacklist', authenticate, - ensureIsAdmin, - videosBlacklistRemoveValidator, - removeVideoFromBlacklistController + ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST), + asyncMiddleware(videosBlacklistRemoveValidator), + asyncMiddleware(removeVideoFromBlacklistController) ) // --------------------------------------------------------------------------- @@ -49,37 +42,34 @@ export { // --------------------------------------------------------------------------- -function addVideoToBlacklist (req: express.Request, res: express.Response, next: express.NextFunction) { +async function addVideoToBlacklist (req: express.Request, res: express.Response, next: express.NextFunction) { const videoInstance = res.locals.video const toCreate = { videoId: videoInstance.id } - db.BlacklistedVideo.create(toCreate) - .then(() => res.type('json').status(204).end()) - .catch(err => { - logger.error('Errors when blacklisting video ', err) - return next(err) - }) + await VideoBlacklistModel.create(toCreate) + return res.type('json').status(204).end() } -function listBlacklist (req: express.Request, res: express.Response, next: express.NextFunction) { - db.BlacklistedVideo.listForApi(req.query.start, req.query.count, req.query.sort) - .then(resultList => res.json(getFormattedObjects(resultList.data, resultList.total))) - .catch(err => next(err)) +async function listBlacklist (req: express.Request, res: express.Response, next: express.NextFunction) { + const resultList = await VideoBlacklistModel.listForApi(req.query.start, req.query.count, req.query.sort) + + return res.json(getFormattedObjects(resultList.data, resultList.total)) } -function removeVideoFromBlacklistController (req: express.Request, res: express.Response, next: express.NextFunction) { - const blacklistedVideo = res.locals.blacklistedVideo as BlacklistedVideoInstance - - blacklistedVideo.destroy() - .then(() => { - logger.info('Video %s removed from blacklist.', res.locals.video.uuid) - res.sendStatus(204) - }) - .catch(err => { - logger.error('Some error while removing video %s from blacklist.', res.locals.video.uuid, err) - next(err) - }) +async function removeVideoFromBlacklistController (req: express.Request, res: express.Response, next: express.NextFunction) { + const blacklistedVideo = res.locals.blacklistedVideo as VideoBlacklistModel + + try { + await blacklistedVideo.destroy() + + logger.info('Video %s removed from blacklist.', res.locals.video.uuid) + + return res.sendStatus(204) + } catch (err) { + logger.error('Some error while removing video %s from blacklist.', res.locals.video.uuid, err) + throw err + } }