The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/apps/meteor/server/services/upload/service.ts

33 lines
1.4 KiB

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<IUpload> {
const fileStore = FileUpload.getStore('Uploads');
return fileStore.insert(details, buffer);
}
async sendFileMessage({ roomId, file, userId, message }: ISendFileMessageParams): Promise<boolean | undefined> {
return sendFileMessage(userId, { roomId, file, msgData: message });
}
async sendFileLivechatMessage({ roomId, visitorToken, file, message }: ISendFileLivechatMessageParams): Promise<boolean> {
return sendFileLivechatMessage({ roomId, visitorToken, file, msgData: message });
}
async getFileBuffer({ file }: { userId: string; file: IUpload }): Promise<Buffer> {
const buffer = await FileUpload.getBuffer(file);
if (!(buffer instanceof Buffer)) {
throw new Error('Unknown error');
}
return buffer;
}
}