X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fvideos%2Fblacklist.ts;h=fa8448c864a1976c69cad3168303e4a5ad079fa6;hb=9d6b9d10ef8cbef39e89bc709285abffb0d8caa1;hp=43b0516e79a8eed2af326e0294bb700509f710bb;hpb=73471b1a52f242e86364ffb077ea6cadb3b07ae2;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/videos/blacklist.ts b/server/controllers/api/videos/blacklist.ts index 43b0516e7..fa8448c86 100644 --- a/server/controllers/api/videos/blacklist.ts +++ b/server/controllers/api/videos/blacklist.ts @@ -1,7 +1,9 @@ import * as express from 'express' -import { VideoBlacklist, UserRight, VideoBlacklistCreate } from '../../../../shared' +import { blacklistVideo, unblacklistVideo } from '@server/lib/video-blacklist' +import { UserRight, VideoBlacklistCreate } from '../../../../shared' import { logger } from '../../../helpers/logger' import { getFormattedObjects } from '../../../helpers/utils' +import { sequelizeTypescript } from '../../../initializers/database' import { asyncMiddleware, authenticate, @@ -11,15 +13,12 @@ import { setBlacklistSort, setDefaultPagination, videosBlacklistAddValidator, + videosBlacklistFiltersValidator, videosBlacklistRemoveValidator, videosBlacklistUpdateValidator } from '../../../middlewares' import { VideoBlacklistModel } from '../../../models/video/video-blacklist' -import { sequelizeTypescript } from '../../../initializers' -import { Notifier } from '../../../lib/notifier' -import { VideoModel } from '../../../models/video/video' -import { sendCreateVideo, sendDeleteVideo, sendUpdateVideo } from '../../../lib/activitypub/send' -import { federateVideoIfNeeded } from '../../../lib/activitypub' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const blacklistRouter = express.Router() @@ -27,7 +26,7 @@ blacklistRouter.post('/:videoId/blacklist', authenticate, ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST), asyncMiddleware(videosBlacklistAddValidator), - asyncMiddleware(addVideoToBlacklist) + asyncMiddleware(addVideoToBlacklistController) ) blacklistRouter.get('/blacklist', @@ -37,6 +36,7 @@ blacklistRouter.get('/blacklist', blacklistSortValidator, setBlacklistSort, setDefaultPagination, + videosBlacklistFiltersValidator, asyncMiddleware(listBlacklist) ) @@ -62,32 +62,19 @@ export { // --------------------------------------------------------------------------- -async function addVideoToBlacklist (req: express.Request, res: express.Response) { - const videoInstance = res.locals.video +async function addVideoToBlacklistController (req: express.Request, res: express.Response) { + const videoInstance = res.locals.videoAll const body: VideoBlacklistCreate = req.body - const toCreate = { - videoId: videoInstance.id, - unfederated: body.unfederate === true, - reason: body.reason - } + await blacklistVideo(videoInstance, body) - const blacklist = await VideoBlacklistModel.create(toCreate) - blacklist.Video = videoInstance + logger.info('Video %s blacklisted.', videoInstance.uuid) - if (body.unfederate === true) { - await sendDeleteVideo(videoInstance, undefined) - } - - Notifier.Instance.notifyOnVideoBlacklist(blacklist) - - logger.info('Video %s blacklisted.', res.locals.video.uuid) - - return res.type('json').status(204).end() + return res.type('json').sendStatus(HttpStatusCode.NO_CONTENT_204) } async function updateVideoBlacklistController (req: express.Request, res: express.Response) { - const videoBlacklist = res.locals.videoBlacklist as VideoBlacklistModel + const videoBlacklist = res.locals.videoBlacklist if (req.body.reason !== undefined) videoBlacklist.reason = req.body.reason @@ -95,32 +82,28 @@ async function updateVideoBlacklistController (req: express.Request, res: expres return videoBlacklist.save({ transaction: t }) }) - return res.type('json').status(204).end() + return res.type('json').sendStatus(HttpStatusCode.NO_CONTENT_204) } -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) +async function listBlacklist (req: express.Request, res: express.Response) { + const resultList = await VideoBlacklistModel.listForApi({ + start: req.query.start, + count: req.query.count, + sort: req.query.sort, + search: req.query.search, + type: req.query.type + }) - return res.json(getFormattedObjects(resultList.data, resultList.total)) + return res.json(getFormattedObjects(resultList.data, resultList.total)) } -async function removeVideoFromBlacklistController (req: express.Request, res: express.Response, next: express.NextFunction) { - const videoBlacklist = res.locals.videoBlacklist as VideoBlacklistModel - const video: VideoModel = res.locals.video - - await sequelizeTypescript.transaction(async t => { - const unfederated = videoBlacklist.unfederated - await videoBlacklist.destroy({ transaction: t }) - - // Re federate the video - if (unfederated === true) { - await federateVideoIfNeeded(video, true, t) - } - }) +async function removeVideoFromBlacklistController (req: express.Request, res: express.Response) { + const videoBlacklist = res.locals.videoBlacklist + const video = res.locals.videoAll - Notifier.Instance.notifyOnVideoUnblacklist(video) + await unblacklistVideo(videoBlacklist, video) - logger.info('Video %s removed from blacklist.', res.locals.video.uuid) + logger.info('Video %s removed from blacklist.', video.uuid) - return res.type('json').status(204).end() + return res.type('json').sendStatus(HttpStatusCode.NO_CONTENT_204) }