X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fvideos%2Fblacklist.ts;h=4103bb0630793b7f5edf3c521f46c821b004cb22;hb=44e702ded455c118f9908b70d25e7c7e5512abe9;hp=2a667480d468397438ec5e48d4f074ecafe13471;hpb=8c559fad1e1c4c2ab7f1388c73200aa4c6256d74;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/videos/blacklist.ts b/server/controllers/api/videos/blacklist.ts index 2a667480d..4103bb063 100644 --- a/server/controllers/api/videos/blacklist.ts +++ b/server/controllers/api/videos/blacklist.ts @@ -1,12 +1,15 @@ -import * as express from 'express' -import { UserRight, VideoBlacklistCreate, VideoBlacklistType } from '../../../../shared' +import express from 'express' +import { blacklistVideo, unblacklistVideo } from '@server/lib/video-blacklist' +import { HttpStatusCode, UserRight, VideoBlacklistCreate } from '@shared/models' import { logger } from '../../../helpers/logger' import { getFormattedObjects } from '../../../helpers/utils' +import { sequelizeTypescript } from '../../../initializers/database' import { asyncMiddleware, authenticate, blacklistSortValidator, ensureUserHasRight, + openapiOperationDoc, paginationValidator, setBlacklistSort, setDefaultPagination, @@ -16,22 +19,19 @@ import { videosBlacklistUpdateValidator } from '../../../middlewares' import { VideoBlacklistModel } from '../../../models/video/video-blacklist' -import { sequelizeTypescript } from '../../../initializers' -import { Notifier } from '../../../lib/notifier' -import { sendDeleteVideo } from '../../../lib/activitypub/send' -import { federateVideoIfNeeded } from '../../../lib/activitypub' -import { MVideoBlacklistVideo } from '@server/typings/models' const blacklistRouter = express.Router() blacklistRouter.post('/:videoId/blacklist', + openapiOperationDoc({ operationId: 'addVideoBlock' }), authenticate, ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST), asyncMiddleware(videosBlacklistAddValidator), - asyncMiddleware(addVideoToBlacklist) + asyncMiddleware(addVideoToBlacklistController) ) blacklistRouter.get('/blacklist', + openapiOperationDoc({ operationId: 'getVideoBlocks' }), authenticate, ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST), paginationValidator, @@ -50,6 +50,7 @@ blacklistRouter.put('/:videoId/blacklist', ) blacklistRouter.delete('/:videoId/blacklist', + openapiOperationDoc({ operationId: 'delVideoBlock' }), authenticate, ensureUserHasRight(UserRight.MANAGE_VIDEO_BLACKLIST), asyncMiddleware(videosBlacklistRemoveValidator), @@ -64,29 +65,15 @@ export { // --------------------------------------------------------------------------- -async function addVideoToBlacklist (req: express.Request, res: express.Response) { +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, - type: VideoBlacklistType.MANUAL - } - - const blacklist: MVideoBlacklistVideo = await VideoBlacklistModel.create(toCreate) - blacklist.Video = videoInstance - - if (body.unfederate === true) { - await sendDeleteVideo(videoInstance, undefined) - } - - Notifier.Instance.notifyOnVideoBlacklist(blacklist) + await blacklistVideo(videoInstance, body) logger.info('Video %s blacklisted.', videoInstance.uuid) - return res.type('json').status(204).end() + return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() } async function updateVideoBlacklistController (req: express.Request, res: express.Response) { @@ -98,11 +85,17 @@ async function updateVideoBlacklistController (req: express.Request, res: expres return videoBlacklist.save({ transaction: t }) }) - return res.type('json').status(204).end() + return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() } async function listBlacklist (req: express.Request, res: express.Response) { - const resultList = await VideoBlacklistModel.listForApi(req.query.start, req.query.count, req.query.sort, req.query.type) + 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)) } @@ -111,32 +104,9 @@ async function removeVideoFromBlacklistController (req: express.Request, res: ex const videoBlacklist = res.locals.videoBlacklist const video = res.locals.videoAll - const videoBlacklistType = await sequelizeTypescript.transaction(async t => { - const unfederated = videoBlacklist.unfederated - const videoBlacklistType = videoBlacklist.type - - await videoBlacklist.destroy({ transaction: t }) - video.VideoBlacklist = undefined - - // Re federate the video - if (unfederated === true) { - await federateVideoIfNeeded(video, true, t) - } - - return videoBlacklistType - }) - - Notifier.Instance.notifyOnVideoUnblacklist(video) - - if (videoBlacklistType === VideoBlacklistType.AUTO_BEFORE_PUBLISHED) { - Notifier.Instance.notifyOnVideoPublishedAfterRemovedFromAutoBlacklist(video) - - // Delete on object so new video notifications will send - delete video.VideoBlacklist - Notifier.Instance.notifyOnNewVideoIfNeeded(video) - } + await unblacklistVideo(videoBlacklist, video) logger.info('Video %s removed from blacklist.', video.uuid) - return res.type('json').status(204).end() + return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() }