File size: 1,145 Bytes
4327358
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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<void>;

  abstract save(buffer: Buffer, data: MediaData): Promise<boolean>;

  abstract exists(data: MediaData): Promise<boolean>;

  abstract getStorageData(data: MediaData): Promise<MediaStorageData>;

  abstract purge(): Promise<void>;

  abstract close(): Promise<void>;
}

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 };