X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=inline;f=server%2Fcontrollers%2Fapi%2Fvideo-channel.ts;h=1707732ee29a8a675d0e9c6e31ab70ef93c01bdb;hb=4bbfc6c606c8d3794bae25c64c516120af41f4eb;hp=61e72125fba3b9ce3a067288b64f76a93c994189;hpb=3ff5a19b4c988d6c712b7ce63c4cf04f99d047ce;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/video-channel.ts b/server/controllers/api/video-channel.ts index 61e72125f..1707732ee 100644 --- a/server/controllers/api/video-channel.ts +++ b/server/controllers/api/video-channel.ts @@ -19,12 +19,16 @@ import { videosSortValidator } from '../../middlewares/validators' import { sendUpdateActor } from '../../lib/activitypub/send' import { VideoChannelCreate, VideoChannelUpdate } from '../../../shared' import { createVideoChannel } from '../../lib/video-channel' -import { isNSFWHidden } from '../../helpers/express-utils' +import { createReqFiles, isNSFWHidden } from '../../helpers/express-utils' import { setAsyncActorKeys } from '../../lib/activitypub' import { AccountModel } from '../../models/account/account' -import { sequelizeTypescript } from '../../initializers' +import { CONFIG, IMAGE_MIMETYPE_EXT, sequelizeTypescript } from '../../initializers' import { logger } from '../../helpers/logger' import { VideoModel } from '../../models/video/video' +import { updateAvatarValidator } from '../../middlewares/validators/avatar' +import { updateActorAvatarFile } from '../../lib/avatar' + +const reqAvatarFile = createReqFiles([ 'avatarfile' ], IMAGE_MIMETYPE_EXT, { avatarfile: CONFIG.STORAGE.AVATARS_DIR }) const videoChannelRouter = express.Router() @@ -42,6 +46,15 @@ videoChannelRouter.post('/', asyncRetryTransactionMiddleware(addVideoChannel) ) +videoChannelRouter.post('/:id/avatar/pick', + authenticate, + reqAvatarFile, + // Check the rights + asyncMiddleware(videoChannelsUpdateValidator), + updateAvatarValidator, + asyncMiddleware(updateVideoChannelAvatar) +) + videoChannelRouter.put('/:id', authenticate, asyncMiddleware(videoChannelsUpdateValidator), @@ -83,6 +96,19 @@ async function listVideoChannels (req: express.Request, res: express.Response, n return res.json(getFormattedObjects(resultList.data, resultList.total)) } +async function updateVideoChannelAvatar (req: express.Request, res: express.Response, next: express.NextFunction) { + const avatarPhysicalFile = req.files[ 'avatarfile' ][ 0 ] + const videoChannel = res.locals.videoChannel + + const avatar = await updateActorAvatarFile(avatarPhysicalFile, videoChannel.Actor, videoChannel) + + return res + .json({ + avatar: avatar.toFormattedJSON() + }) + .end() +} + async function addVideoChannel (req: express.Request, res: express.Response) { const videoChannelInfo: VideoChannelCreate = req.body const account: AccountModel = res.locals.oauth.token.User.Account