import { S3MediaData } from '@waha/structures/media.s3.dto'; /** * Handles saving data to the physical storage */ interface Message { // false_111111111@c.us_AAAAAAAAAAAAAA id: string; // 1111111@c.us chatId: string; } interface File { extension: string; filename?: string; } export interface MediaData { session: string; message: Message; file: File; } /** * For stored media data */ export interface MediaStorageData { url: string; s3?: S3MediaData; } abstract class IMediaStorage { abstract init(): Promise; abstract save(buffer: Buffer, data: MediaData): Promise; abstract exists(data: MediaData): Promise; abstract getStorageData(data: MediaData): Promise; abstract purge(): Promise; abstract close(): Promise; } export function getMetadata(data: MediaData): any { const now = new Date(); return { 'waha-session': data.session, 'waha-chat-id': data.message.chatId, 'waha-message-id': data.message.id, 'waha-media-filename': data.file.filename, 'waha-created-at': now.getTime(), }; } export { IMediaStorage };