From 4bbfc6c606c8d3794bae25c64c516120af41f4eb Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 29 Jun 2018 11:29:23 +0200 Subject: API: Add ability to update video channel avatar --- server/lib/avatar.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 server/lib/avatar.ts (limited to 'server/lib/avatar.ts') diff --git a/server/lib/avatar.ts b/server/lib/avatar.ts new file mode 100644 index 000000000..7fdef008c --- /dev/null +++ b/server/lib/avatar.ts @@ -0,0 +1,34 @@ +import 'multer' +import * as uuidv4 from 'uuid' +import { sendUpdateActor } from './activitypub/send' +import { AVATARS_SIZE, CONFIG, sequelizeTypescript } from '../initializers' +import { updateActorAvatarInstance } from './activitypub' +import { processImage } from '../helpers/image-utils' +import { ActorModel } from '../models/activitypub/actor' +import { AccountModel } from '../models/account/account' +import { VideoChannelModel } from '../models/video/video-channel' +import { extname, join } from 'path' + +async function updateActorAvatarFile ( + avatarPhysicalFile: Express.Multer.File, + actor: ActorModel, + accountOrChannel: AccountModel | VideoChannelModel +) { + const extension = extname(avatarPhysicalFile.filename) + const avatarName = uuidv4() + extension + const destination = join(CONFIG.STORAGE.AVATARS_DIR, avatarName) + await processImage(avatarPhysicalFile, destination, AVATARS_SIZE) + + return sequelizeTypescript.transaction(async t => { + const updatedActor = await updateActorAvatarInstance(actor, avatarName, t) + await updatedActor.save({ transaction: t }) + + await sendUpdateActor(accountOrChannel, t) + + return updatedActor.Avatar + }) +} + +export { + updateActorAvatarFile +} -- cgit v1.2.3