import { ServiceClassInternal } from '@rocket.chat/core-services'; import type { IUpload } from '@rocket.chat/core-typings'; import type { ISendFileLivechatMessageParams, ISendFileMessageParams, IUploadFileParams, IUploadService } from '@rocket.chat/core-services'; import { FileUpload } from '../../../app/file-upload/server'; import { sendFileLivechatMessage } from '../../../app/livechat/server/methods/sendFileLivechatMessage'; import { sendFileMessage } from '../../../app/file-upload/server/methods/sendFileMessage'; export class UploadService extends ServiceClassInternal implements IUploadService { protected name = 'upload'; async uploadFile({ buffer, details }: IUploadFileParams): Promise { const fileStore = FileUpload.getStore('Uploads'); return fileStore.insert(details, buffer); } async sendFileMessage({ roomId, file, userId, message }: ISendFileMessageParams): Promise { return sendFileMessage(userId, { roomId, file, msgData: message }); } async sendFileLivechatMessage({ roomId, visitorToken, file, message }: ISendFileLivechatMessageParams): Promise { return sendFileLivechatMessage({ roomId, visitorToken, file, msgData: message }); } async getFileBuffer({ file }: { userId: string; file: IUpload }): Promise { const buffer = await FileUpload.getBuffer(file); if (!(buffer instanceof Buffer)) { throw new Error('Unknown error'); } return buffer; } }