gifted-baileys 1.5.4 → 1.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/WAProto/WAProto.proto +88 -969
- package/WAProto/index.d.ts +1256 -13195
- package/WAProto/index.js +74730 -125106
- package/package.json +9 -27
- package/src/Defaults/baileys-version.json +3 -0
- package/{lib → src}/Defaults/index.js +14 -7
- package/src/Defaults/index.ts +131 -0
- package/src/README.md +1 -0
- package/src/Signal/libsignal.js +180 -0
- package/src/Signal/libsignal.ts +141 -0
- package/src/Socket/Client/abstract-socket-client.ts +19 -0
- package/{lib → src}/Socket/Client/index.js +3 -2
- package/src/Socket/Client/index.ts +3 -0
- package/src/Socket/Client/mobile-socket-client.js +78 -0
- package/src/Socket/Client/mobile-socket-client.ts +66 -0
- package/src/Socket/Client/web-socket-client.js +75 -0
- package/src/Socket/Client/web-socket-client.ts +57 -0
- package/{lib → src}/Socket/business.js +33 -28
- package/src/Socket/business.ts +281 -0
- package/{lib → src}/Socket/chats.js +176 -174
- package/src/Socket/chats.ts +1030 -0
- package/{lib → src}/Socket/groups.js +68 -80
- package/src/Socket/groups.ts +356 -0
- package/{lib → src}/Socket/index.js +1 -4
- package/src/Socket/index.ts +13 -0
- package/{lib → src}/Socket/messages-recv.js +211 -378
- package/src/Socket/messages-recv.ts +985 -0
- package/{lib → src}/Socket/messages-send.js +177 -452
- package/src/Socket/messages-send.ts +871 -0
- package/{lib → src}/Socket/newsletter.js +98 -107
- package/src/Socket/newsletter.ts +282 -0
- package/{lib → src}/Socket/registration.js +48 -56
- package/src/Socket/registration.ts +250 -0
- package/{lib → src}/Socket/socket.js +77 -77
- package/src/Socket/socket.ts +777 -0
- package/src/Store/index.ts +3 -0
- package/{lib → src}/Store/make-cache-manager-store.js +34 -25
- package/src/Store/make-cache-manager-store.ts +100 -0
- package/{lib → src}/Store/make-in-memory-store.js +32 -36
- package/src/Store/make-in-memory-store.ts +475 -0
- package/src/Store/make-ordered-dictionary.ts +86 -0
- package/{lib → src}/Store/object-repository.js +1 -1
- package/src/Store/object-repository.ts +32 -0
- package/src/Tests/test.app-state-sync.js +204 -0
- package/src/Tests/test.app-state-sync.ts +207 -0
- package/src/Tests/test.event-buffer.js +270 -0
- package/src/Tests/test.event-buffer.ts +319 -0
- package/src/Tests/test.key-store.js +76 -0
- package/src/Tests/test.key-store.ts +92 -0
- package/src/Tests/test.libsignal.js +141 -0
- package/src/Tests/test.libsignal.ts +186 -0
- package/src/Tests/test.media-download.js +93 -0
- package/src/Tests/test.media-download.ts +76 -0
- package/src/Tests/test.messages.js +33 -0
- package/src/Tests/test.messages.ts +37 -0
- package/src/Tests/utils.js +34 -0
- package/src/Tests/utils.ts +36 -0
- package/src/Types/Auth.ts +113 -0
- package/src/Types/Call.ts +15 -0
- package/src/Types/Chat.ts +106 -0
- package/{lib/Types/Contact.d.ts → src/Types/Contact.ts} +9 -8
- package/src/Types/Events.ts +93 -0
- package/src/Types/GroupMetadata.ts +53 -0
- package/src/Types/Label.ts +36 -0
- package/{lib/Types/LabelAssociation.d.ts → src/Types/LabelAssociation.ts} +22 -16
- package/src/Types/Message.ts +288 -0
- package/src/Types/Newsletter.ts +98 -0
- package/src/Types/Product.ts +85 -0
- package/src/Types/Signal.ts +68 -0
- package/{lib/Types/Socket.d.ts → src/Types/Socket.ts} +68 -61
- package/src/Types/State.ts +29 -0
- package/src/Types/index.ts +59 -0
- package/{lib → src}/Utils/auth-utils.js +90 -73
- package/src/Utils/auth-utils.ts +222 -0
- package/src/Utils/baileys-event-stream.js +92 -0
- package/src/Utils/baileys-event-stream.ts +66 -0
- package/{lib → src}/Utils/business.js +43 -15
- package/src/Utils/business.ts +275 -0
- package/{lib → src}/Utils/chat-utils.js +94 -87
- package/src/Utils/chat-utils.ts +860 -0
- package/{lib → src}/Utils/crypto.js +2 -4
- package/src/Utils/crypto.ts +131 -0
- package/src/Utils/decode-wa-message.js +211 -0
- package/src/Utils/decode-wa-message.ts +228 -0
- package/{lib → src}/Utils/event-buffer.js +13 -4
- package/src/Utils/event-buffer.ts +613 -0
- package/{lib → src}/Utils/generics.js +86 -67
- package/src/Utils/generics.ts +434 -0
- package/{lib → src}/Utils/history.js +39 -13
- package/src/Utils/history.ts +112 -0
- package/src/Utils/index.ts +17 -0
- package/{lib → src}/Utils/link-preview.js +54 -17
- package/src/Utils/link-preview.ts +122 -0
- package/src/Utils/logger.ts +3 -0
- package/src/Utils/lt-hash.ts +61 -0
- package/{lib → src}/Utils/make-mutex.js +13 -4
- package/src/Utils/make-mutex.ts +44 -0
- package/{lib → src}/Utils/messages-media.js +255 -193
- package/src/Utils/messages-media.ts +847 -0
- package/{lib → src}/Utils/messages.js +118 -588
- package/src/Utils/messages.ts +956 -0
- package/src/Utils/noise-handler.ts +197 -0
- package/{lib → src}/Utils/process-message.js +30 -27
- package/src/Utils/process-message.ts +414 -0
- package/{lib → src}/Utils/signal.js +42 -25
- package/src/Utils/signal.ts +177 -0
- package/{lib → src}/Utils/use-multi-file-auth-state.js +28 -27
- package/src/Utils/use-multi-file-auth-state.ts +90 -0
- package/{lib → src}/Utils/validate-connection.js +9 -40
- package/src/Utils/validate-connection.ts +238 -0
- package/src/WABinary/constants.ts +42 -0
- package/src/WABinary/decode.ts +265 -0
- package/{lib → src}/WABinary/encode.js +10 -16
- package/src/WABinary/encode.ts +236 -0
- package/src/WABinary/generic-utils.ts +121 -0
- package/src/WABinary/index.ts +5 -0
- package/src/WABinary/jid-utils.ts +68 -0
- package/src/WABinary/types.ts +17 -0
- package/src/WAM/BinaryInfo.ts +12 -0
- package/src/WAM/constants.ts +15382 -0
- package/src/WAM/encode.ts +174 -0
- package/src/WAM/index.ts +3 -0
- package/{lib → src}/index.js +0 -1
- package/src/index.ts +13 -0
- package/README.md +0 -1645
- package/lib/Defaults/baileys-version.json +0 -3
- package/lib/Defaults/index.d.ts +0 -284
- package/lib/Signal/libsignal.d.ts +0 -3
- package/lib/Signal/libsignal.js +0 -161
- package/lib/Socket/Client/abstract-socket-client.d.ts +0 -15
- package/lib/Socket/Client/index.d.ts +0 -2
- package/lib/Socket/Client/mobile-socket-client.d.ts +0 -12
- package/lib/Socket/Client/mobile-socket-client.js +0 -65
- package/lib/Socket/Client/types.d.ts +0 -17
- package/lib/Socket/Client/types.js +0 -13
- package/lib/Socket/Client/websocket.d.ts +0 -12
- package/lib/Socket/Client/websocket.js +0 -62
- package/lib/Socket/business.d.ts +0 -170
- package/lib/Socket/chats.d.ts +0 -81
- package/lib/Socket/groups.d.ts +0 -115
- package/lib/Socket/index.d.ts +0 -172
- package/lib/Socket/messages-recv.d.ts +0 -158
- package/lib/Socket/messages-send.d.ts +0 -155
- package/lib/Socket/newsletter.d.ts +0 -132
- package/lib/Socket/registration.d.ts +0 -264
- package/lib/Socket/socket.d.ts +0 -44
- package/lib/Socket/usync.d.ts +0 -37
- package/lib/Socket/usync.js +0 -70
- package/lib/Store/index.d.ts +0 -3
- package/lib/Store/make-cache-manager-store.d.ts +0 -14
- package/lib/Store/make-in-memory-store.d.ts +0 -118
- package/lib/Store/make-ordered-dictionary.d.ts +0 -13
- package/lib/Store/object-repository.d.ts +0 -10
- package/lib/Types/Auth.d.ts +0 -109
- package/lib/Types/Call.d.ts +0 -13
- package/lib/Types/Chat.d.ts +0 -107
- package/lib/Types/Events.d.ts +0 -172
- package/lib/Types/GroupMetadata.d.ts +0 -56
- package/lib/Types/Label.d.ts +0 -46
- package/lib/Types/Message.d.ts +0 -433
- package/lib/Types/Newsletter.d.ts +0 -92
- package/lib/Types/Product.d.ts +0 -78
- package/lib/Types/Signal.d.ts +0 -57
- package/lib/Types/State.d.ts +0 -27
- package/lib/Types/USync.d.ts +0 -25
- package/lib/Types/USync.js +0 -2
- package/lib/Types/index.d.ts +0 -66
- package/lib/Utils/auth-utils.d.ts +0 -18
- package/lib/Utils/baileys-event-stream.d.ts +0 -16
- package/lib/Utils/baileys-event-stream.js +0 -63
- package/lib/Utils/business.d.ts +0 -22
- package/lib/Utils/chat-utils.d.ts +0 -70
- package/lib/Utils/crypto.d.ts +0 -40
- package/lib/Utils/decode-wa-message.d.ts +0 -36
- package/lib/Utils/decode-wa-message.js +0 -226
- package/lib/Utils/event-buffer.d.ts +0 -35
- package/lib/Utils/generics.d.ts +0 -88
- package/lib/Utils/history.d.ts +0 -19
- package/lib/Utils/index.d.ts +0 -17
- package/lib/Utils/link-preview.d.ts +0 -21
- package/lib/Utils/logger.d.ts +0 -2
- package/lib/Utils/lt-hash.d.ts +0 -12
- package/lib/Utils/make-mutex.d.ts +0 -7
- package/lib/Utils/messages-media.d.ts +0 -113
- package/lib/Utils/messages.d.ts +0 -77
- package/lib/Utils/noise-handler.d.ts +0 -20
- package/lib/Utils/process-message.d.ts +0 -41
- package/lib/Utils/signal.d.ts +0 -33
- package/lib/Utils/use-multi-file-auth-state.d.ts +0 -12
- package/lib/Utils/validate-connection.d.ts +0 -11
- package/lib/WABinary/constants.d.ts +0 -27
- package/lib/WABinary/decode.d.ts +0 -6
- package/lib/WABinary/encode.d.ts +0 -2
- package/lib/WABinary/generic-utils.d.ts +0 -14
- package/lib/WABinary/index.d.ts +0 -5
- package/lib/WABinary/jid-utils.d.ts +0 -31
- package/lib/WABinary/types.d.ts +0 -18
- package/lib/WAM/BinaryInfo.d.ts +0 -8
- package/lib/WAM/constants.d.ts +0 -38
- package/lib/WAM/encode.d.ts +0 -2
- package/lib/WAM/index.d.ts +0 -3
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +0 -32
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +0 -57
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -30
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
- package/lib/WAUSync/Protocols/index.d.ts +0 -4
- package/lib/WAUSync/Protocols/index.js +0 -20
- package/lib/WAUSync/USyncQuery.d.ts +0 -26
- package/lib/WAUSync/USyncQuery.js +0 -79
- package/lib/WAUSync/USyncUser.d.ts +0 -10
- package/lib/WAUSync/USyncUser.js +0 -22
- package/lib/WAUSync/index.d.ts +0 -3
- package/lib/WAUSync/index.js +0 -19
- /package/{lib → src}/Defaults/phonenumber-mcc.json +0 -0
- /package/{lib → src}/Socket/Client/abstract-socket-client.js +0 -0
- /package/{lib → src}/Store/index.js +0 -0
- /package/{lib → src}/Store/make-ordered-dictionary.js +0 -0
- /package/{lib → src}/Types/Auth.js +0 -0
- /package/{lib → src}/Types/Call.js +0 -0
- /package/{lib → src}/Types/Chat.js +0 -0
- /package/{lib → src}/Types/Contact.js +0 -0
- /package/{lib → src}/Types/Events.js +0 -0
- /package/{lib → src}/Types/GroupMetadata.js +0 -0
- /package/{lib → src}/Types/Label.js +0 -0
- /package/{lib → src}/Types/LabelAssociation.js +0 -0
- /package/{lib → src}/Types/Message.js +0 -0
- /package/{lib → src}/Types/Newsletter.js +0 -0
- /package/{lib → src}/Types/Product.js +0 -0
- /package/{lib → src}/Types/Signal.js +0 -0
- /package/{lib → src}/Types/Socket.js +0 -0
- /package/{lib → src}/Types/State.js +0 -0
- /package/{lib → src}/Types/index.js +0 -0
- /package/{lib → src}/Utils/index.js +0 -0
- /package/{lib → src}/Utils/logger.js +0 -0
- /package/{lib → src}/Utils/lt-hash.js +0 -0
- /package/{lib → src}/Utils/noise-handler.js +0 -0
- /package/{lib → src}/WABinary/constants.js +0 -0
- /package/{lib → src}/WABinary/decode.js +0 -0
- /package/{lib → src}/WABinary/generic-utils.js +0 -0
- /package/{lib → src}/WABinary/index.js +0 -0
- /package/{lib → src}/WABinary/jid-utils.js +0 -0
- /package/{lib → src}/WABinary/types.js +0 -0
- /package/{lib → src}/WAM/BinaryInfo.js +0 -0
- /package/{lib → src}/WAM/constants.js +0 -0
- /package/{lib → src}/WAM/encode.js +0 -0
- /package/{lib → src}/WAM/index.js +0 -0
- /package/{lib → src}/gifted +0 -0
|
@@ -1,9 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
12
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
13
|
+
var m = o[Symbol.asyncIterator], i;
|
|
14
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
15
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
16
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
17
|
+
};
|
|
2
18
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
19
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
20
|
};
|
|
5
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.assertMediaContent = exports.downloadMediaMessage = exports.aggregateMessageKeysNotFromMe = exports.
|
|
22
|
+
exports.assertMediaContent = exports.downloadMediaMessage = exports.aggregateMessageKeysNotFromMe = exports.updateMessageWithPollUpdate = exports.updateMessageWithReaction = exports.updateMessageWithReceipt = exports.getDevice = exports.extractMessageContent = exports.normalizeMessageContent = exports.getContentType = exports.generateWAMessage = exports.generateWAMessageFromContent = exports.generateWAMessageContent = exports.generateForwardMessageContent = exports.prepareDisappearingMessageSettingContent = exports.prepareWAMessageMedia = exports.generateLinkPreviewIfRequired = exports.extractUrlFromText = void 0;
|
|
23
|
+
exports.getAggregateVotesInPollMessage = getAggregateVotesInPollMessage;
|
|
7
24
|
const boom_1 = require("@hapi/boom");
|
|
8
25
|
const axios_1 = __importDefault(require("axios"));
|
|
9
26
|
const crypto_1 = require("crypto");
|
|
@@ -38,20 +55,20 @@ const ButtonType = WAProto_1.proto.Message.ButtonsMessage.HeaderType;
|
|
|
38
55
|
*/
|
|
39
56
|
const extractUrlFromText = (text) => { var _a; return (_a = text.match(Defaults_1.URL_REGEX)) === null || _a === void 0 ? void 0 : _a[0]; };
|
|
40
57
|
exports.extractUrlFromText = extractUrlFromText;
|
|
41
|
-
const generateLinkPreviewIfRequired =
|
|
58
|
+
const generateLinkPreviewIfRequired = (text, getUrlInfo, logger) => __awaiter(void 0, void 0, void 0, function* () {
|
|
42
59
|
const url = (0, exports.extractUrlFromText)(text);
|
|
43
60
|
if (!!getUrlInfo && url) {
|
|
44
61
|
try {
|
|
45
|
-
const urlInfo =
|
|
62
|
+
const urlInfo = yield getUrlInfo(url);
|
|
46
63
|
return urlInfo;
|
|
47
64
|
}
|
|
48
65
|
catch (error) { // ignore if fails
|
|
49
66
|
logger === null || logger === void 0 ? void 0 : logger.warn({ trace: error.stack }, 'url generation failed');
|
|
50
67
|
}
|
|
51
68
|
}
|
|
52
|
-
};
|
|
69
|
+
});
|
|
53
70
|
exports.generateLinkPreviewIfRequired = generateLinkPreviewIfRequired;
|
|
54
|
-
const assertColor =
|
|
71
|
+
const assertColor = (color) => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
72
|
let assertedColor;
|
|
56
73
|
if (typeof color === 'number') {
|
|
57
74
|
assertedColor = color > 0 ? color : 0xffffffff + Number(color) + 1;
|
|
@@ -64,8 +81,8 @@ const assertColor = async (color) => {
|
|
|
64
81
|
assertedColor = parseInt(hex, 16);
|
|
65
82
|
return assertedColor;
|
|
66
83
|
}
|
|
67
|
-
};
|
|
68
|
-
const prepareWAMessageMedia =
|
|
84
|
+
});
|
|
85
|
+
const prepareWAMessageMedia = (message, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
69
86
|
const logger = options.logger;
|
|
70
87
|
let mediaType;
|
|
71
88
|
for (const key of Defaults_1.MEDIA_KEYS) {
|
|
@@ -76,42 +93,7 @@ const prepareWAMessageMedia = async (message, options) => {
|
|
|
76
93
|
if (!mediaType) {
|
|
77
94
|
throw new boom_1.Boom('Invalid media type', { statusCode: 400 });
|
|
78
95
|
}
|
|
79
|
-
const uploadData = {
|
|
80
|
-
...message,
|
|
81
|
-
...(message.annotations ? {
|
|
82
|
-
annotations: message.annotations
|
|
83
|
-
} : {
|
|
84
|
-
annotations: [
|
|
85
|
-
{
|
|
86
|
-
polygonVertices: [
|
|
87
|
-
{
|
|
88
|
-
x: 60.71664810180664,
|
|
89
|
-
y: -36.39784622192383
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
x: -16.710189819335938,
|
|
93
|
-
y: 49.263675689697266
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
x: -56.585853576660156,
|
|
97
|
-
y: 37.85963439941406
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
x: 20.840980529785156,
|
|
101
|
-
y: -47.80188751220703
|
|
102
|
-
}
|
|
103
|
-
],
|
|
104
|
-
newsletter: {
|
|
105
|
-
newsletterJid: "120363412252486516@newsletter",
|
|
106
|
-
serverMessageId: 0,
|
|
107
|
-
newsletterName: "BAILEYS-PRO [INFO]",
|
|
108
|
-
contentType: "UPDATE",
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
]
|
|
112
|
-
}),
|
|
113
|
-
media: message[mediaType]
|
|
114
|
-
};
|
|
96
|
+
const uploadData = Object.assign(Object.assign({}, message), { media: message[mediaType] });
|
|
115
97
|
delete uploadData[mediaType];
|
|
116
98
|
// check if cacheable + generate cache key
|
|
117
99
|
const cacheableKey = typeof uploadData.media === 'object' &&
|
|
@@ -133,7 +115,7 @@ const prepareWAMessageMedia = async (message, options) => {
|
|
|
133
115
|
logger === null || logger === void 0 ? void 0 : logger.debug({ cacheableKey }, 'got media cache hit');
|
|
134
116
|
const obj = Types_1.WAProto.Message.decode(mediaBuff);
|
|
135
117
|
const key = `${mediaType}Message`;
|
|
136
|
-
Object.assign(obj[key], {
|
|
118
|
+
Object.assign(obj[key], Object.assign(Object.assign({}, uploadData), { media: undefined }));
|
|
137
119
|
return obj;
|
|
138
120
|
}
|
|
139
121
|
}
|
|
@@ -143,23 +125,23 @@ const prepareWAMessageMedia = async (message, options) => {
|
|
|
143
125
|
const requiresWaveformProcessing = mediaType === 'audio' && uploadData.ptt === true;
|
|
144
126
|
const requiresAudioBackground = options.backgroundColor && mediaType === 'audio' && uploadData.ptt === true;
|
|
145
127
|
const requiresOriginalForSomeProcessing = requiresDurationComputation || requiresThumbnailComputation;
|
|
146
|
-
const { mediaKey, encWriteStream, bodyPath, fileEncSha256, fileSha256, fileLength, didSaveToTmpPath, } =
|
|
128
|
+
const { mediaKey, encWriteStream, bodyPath, fileEncSha256, fileSha256, fileLength, didSaveToTmpPath, } = yield (options.newsletter ? messages_media_1.prepareStream : messages_media_1.encryptedStream)(uploadData.media, options.mediaTypeOverride || mediaType, {
|
|
147
129
|
logger,
|
|
148
130
|
saveOriginalFileIfRequired: requiresOriginalForSomeProcessing,
|
|
149
131
|
opts: options.options
|
|
150
132
|
});
|
|
151
133
|
// url safe Base64 encode the SHA256 hash of the body
|
|
152
134
|
const fileEncSha256B64 = (options.newsletter ? fileSha256 : fileEncSha256 !== null && fileEncSha256 !== void 0 ? fileEncSha256 : fileSha256).toString('base64');
|
|
153
|
-
const [{ mediaUrl, directPath, handle }] =
|
|
154
|
-
(
|
|
155
|
-
const result =
|
|
135
|
+
const [{ mediaUrl, directPath, handle }] = yield Promise.all([
|
|
136
|
+
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
137
|
+
const result = yield options.upload(encWriteStream, { fileEncSha256B64, mediaType, timeoutMs: options.mediaUploadTimeoutMs });
|
|
156
138
|
logger === null || logger === void 0 ? void 0 : logger.debug({ mediaType, cacheableKey }, 'uploaded media');
|
|
157
139
|
return result;
|
|
158
|
-
})(),
|
|
159
|
-
(
|
|
140
|
+
}))(),
|
|
141
|
+
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
160
142
|
try {
|
|
161
143
|
if (requiresThumbnailComputation) {
|
|
162
|
-
const { thumbnail, originalImageDimensions } =
|
|
144
|
+
const { thumbnail, originalImageDimensions } = yield (0, messages_media_1.generateThumbnail)(bodyPath, mediaType, options);
|
|
163
145
|
uploadData.jpegThumbnail = thumbnail;
|
|
164
146
|
if (!uploadData.width && originalImageDimensions) {
|
|
165
147
|
uploadData.width = originalImageDimensions.width;
|
|
@@ -169,49 +151,40 @@ const prepareWAMessageMedia = async (message, options) => {
|
|
|
169
151
|
logger === null || logger === void 0 ? void 0 : logger.debug('generated thumbnail');
|
|
170
152
|
}
|
|
171
153
|
if (requiresDurationComputation) {
|
|
172
|
-
uploadData.seconds =
|
|
154
|
+
uploadData.seconds = yield (0, messages_media_1.getAudioDuration)(bodyPath);
|
|
173
155
|
logger === null || logger === void 0 ? void 0 : logger.debug('computed audio duration');
|
|
174
156
|
}
|
|
175
157
|
if (requiresWaveformProcessing) {
|
|
176
|
-
uploadData.waveform =
|
|
158
|
+
uploadData.waveform = yield (0, messages_media_1.getAudioWaveform)(bodyPath, logger);
|
|
177
159
|
logger === null || logger === void 0 ? void 0 : logger.debug('processed waveform');
|
|
178
160
|
}
|
|
179
161
|
if (requiresWaveformProcessing) {
|
|
180
|
-
uploadData.waveform =
|
|
162
|
+
uploadData.waveform = yield (0, messages_media_1.getAudioWaveform)(bodyPath, logger);
|
|
181
163
|
logger === null || logger === void 0 ? void 0 : logger.debug('processed waveform');
|
|
182
164
|
}
|
|
183
165
|
if (requiresAudioBackground) {
|
|
184
|
-
uploadData.backgroundArgb =
|
|
166
|
+
uploadData.backgroundArgb = yield assertColor(options.backgroundColor);
|
|
185
167
|
logger === null || logger === void 0 ? void 0 : logger.debug('computed backgroundColor audio status');
|
|
186
168
|
}
|
|
187
169
|
}
|
|
188
170
|
catch (error) {
|
|
189
171
|
logger === null || logger === void 0 ? void 0 : logger.warn({ trace: error.stack }, 'failed to obtain extra info');
|
|
190
172
|
}
|
|
191
|
-
})(),
|
|
173
|
+
}))(),
|
|
192
174
|
])
|
|
193
|
-
.finally(
|
|
175
|
+
.finally(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
194
176
|
if (!Buffer.isBuffer(encWriteStream)) {
|
|
195
177
|
encWriteStream.destroy();
|
|
196
178
|
}
|
|
197
179
|
// remove tmp files
|
|
198
180
|
if (didSaveToTmpPath && bodyPath) {
|
|
199
|
-
|
|
181
|
+
yield fs_1.promises.unlink(bodyPath);
|
|
200
182
|
logger === null || logger === void 0 ? void 0 : logger.debug('removed tmp files');
|
|
201
183
|
}
|
|
202
|
-
});
|
|
184
|
+
}));
|
|
203
185
|
const obj = Types_1.WAProto.Message.fromObject({
|
|
204
|
-
[`${mediaType}Message`]: MessageTypeProto[mediaType].fromObject({
|
|
205
|
-
|
|
206
|
-
directPath,
|
|
207
|
-
mediaKey: mediaKey,
|
|
208
|
-
fileEncSha256: fileEncSha256,
|
|
209
|
-
fileSha256,
|
|
210
|
-
fileLength,
|
|
211
|
-
mediaKeyTimestamp: handle ? undefined : (0, generics_1.unixTimestampSeconds)(),
|
|
212
|
-
...uploadData,
|
|
213
|
-
media: undefined
|
|
214
|
-
})
|
|
186
|
+
[`${mediaType}Message`]: MessageTypeProto[mediaType].fromObject(Object.assign(Object.assign({ url: handle ? undefined : mediaUrl, directPath, mediaKey: mediaKey, fileEncSha256: fileEncSha256, fileSha256,
|
|
187
|
+
fileLength, mediaKeyTimestamp: handle ? undefined : (0, generics_1.unixTimestampSeconds)() }, uploadData), { media: undefined }))
|
|
215
188
|
});
|
|
216
189
|
if (uploadData.ptv) {
|
|
217
190
|
obj.ptvMessage = obj.videoMessage;
|
|
@@ -222,7 +195,7 @@ const prepareWAMessageMedia = async (message, options) => {
|
|
|
222
195
|
options.mediaCache.set(cacheableKey, Types_1.WAProto.Message.encode(obj).finish());
|
|
223
196
|
}
|
|
224
197
|
return obj;
|
|
225
|
-
};
|
|
198
|
+
});
|
|
226
199
|
exports.prepareWAMessageMedia = prepareWAMessageMedia;
|
|
227
200
|
const prepareDisappearingMessageSettingContent = (ephemeralExpiration) => {
|
|
228
201
|
ephemeralExpiration = ephemeralExpiration || 0;
|
|
@@ -270,15 +243,15 @@ const generateForwardMessageContent = (message, forceForward) => {
|
|
|
270
243
|
return content;
|
|
271
244
|
};
|
|
272
245
|
exports.generateForwardMessageContent = generateForwardMessageContent;
|
|
273
|
-
const generateWAMessageContent =
|
|
274
|
-
var _a
|
|
275
|
-
var
|
|
246
|
+
const generateWAMessageContent = (message, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
247
|
+
var _a;
|
|
248
|
+
var _b;
|
|
276
249
|
let m = {};
|
|
277
250
|
if ('text' in message) {
|
|
278
251
|
const extContent = { text: message.text };
|
|
279
252
|
let urlInfo = message.linkPreview;
|
|
280
253
|
if (typeof urlInfo === 'undefined') {
|
|
281
|
-
urlInfo =
|
|
254
|
+
urlInfo = yield (0, exports.generateLinkPreviewIfRequired)(message.text, options.getUrlInfo, options.logger);
|
|
282
255
|
}
|
|
283
256
|
if (urlInfo) {
|
|
284
257
|
extContent.canonicalUrl = urlInfo['canonical-url'];
|
|
@@ -299,7 +272,7 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
299
272
|
}
|
|
300
273
|
}
|
|
301
274
|
if (options.backgroundColor) {
|
|
302
|
-
extContent.backgroundArgb =
|
|
275
|
+
extContent.backgroundArgb = yield assertColor(options.backgroundColor);
|
|
303
276
|
}
|
|
304
277
|
if (options.font) {
|
|
305
278
|
extContent.font = options.font;
|
|
@@ -320,15 +293,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
320
293
|
}
|
|
321
294
|
else if ('location' in message) {
|
|
322
295
|
m.locationMessage = Types_1.WAProto.Message.LocationMessage.fromObject(message.location);
|
|
323
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
324
|
-
m.locationMessage.contextInfo = message.contextInfo;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
else if ('liveLocation' in message) {
|
|
328
|
-
m.liveLocationMessage = Types_1.WAProto.Message.LiveLocationMessage.fromObject(message.liveLocation);
|
|
329
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
330
|
-
m.liveLocationMessage.contextInfo = message.contextInfo;
|
|
331
|
-
}
|
|
332
296
|
}
|
|
333
297
|
else if ('react' in message) {
|
|
334
298
|
if (!message.react.senderTimestampMs) {
|
|
@@ -351,64 +315,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
351
315
|
message.disappearingMessagesInChat;
|
|
352
316
|
m = (0, exports.prepareDisappearingMessageSettingContent)(exp);
|
|
353
317
|
}
|
|
354
|
-
else if ('groupInvite' in message) {
|
|
355
|
-
m.groupInviteMessage = {};
|
|
356
|
-
m.groupInviteMessage.inviteCode = message.groupInvite.inviteCode;
|
|
357
|
-
m.groupInviteMessage.inviteExpiration = message.groupInvite.inviteExpiration;
|
|
358
|
-
m.groupInviteMessage.caption = message.groupInvite.text;
|
|
359
|
-
m.groupInviteMessage.groupJid = message.groupInvite.jid;
|
|
360
|
-
m.groupInviteMessage.groupName = message.groupInvite.subject;
|
|
361
|
-
m.groupInviteMessage.jpegThumbnail = message.groupInvite.thumbnail;
|
|
362
|
-
//TODO: use built-in interface and get disappearing mode info etc.
|
|
363
|
-
//TODO: cache / use store!?
|
|
364
|
-
if (options.getProfilePicUrl) {
|
|
365
|
-
let pfpUrl;
|
|
366
|
-
try {
|
|
367
|
-
pfpUrl = await options.getProfilePicUrl(message.groupInvite.jid, 'preview');
|
|
368
|
-
}
|
|
369
|
-
catch (_8) {
|
|
370
|
-
pfpUrl = null;
|
|
371
|
-
}
|
|
372
|
-
if (pfpUrl) {
|
|
373
|
-
const resp = await axios_1.default.get(pfpUrl, { responseType: 'arraybuffer' });
|
|
374
|
-
if (resp.status === 200) {
|
|
375
|
-
m.groupInviteMessage.jpegThumbnail = resp.data;
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
else {
|
|
379
|
-
m.groupInviteMessage.jpegThumbnail = null;
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
else if ('pin' in message) {
|
|
384
|
-
m.pinInChatMessage = {};
|
|
385
|
-
m.messageContextInfo = {};
|
|
386
|
-
m.pinInChatMessage.key = message.pin;
|
|
387
|
-
m.pinInChatMessage.type = message.type;
|
|
388
|
-
m.pinInChatMessage.senderTimestampMs = Date.now();
|
|
389
|
-
m.messageContextInfo.messageAddOnDurationInSecs = message.type === 1 ? message.time || 86400 : 0;
|
|
390
|
-
}
|
|
391
|
-
else if ('keep' in message) {
|
|
392
|
-
m.keepInChatMessage = {};
|
|
393
|
-
m.keepInChatMessage.key = message.keep;
|
|
394
|
-
m.keepInChatMessage.keepType = message.type;
|
|
395
|
-
m.keepInChatMessage.timestampMs = Date.now();
|
|
396
|
-
}
|
|
397
|
-
else if ('call' in message) {
|
|
398
|
-
m = {
|
|
399
|
-
scheduledCallCreationMessage: {
|
|
400
|
-
scheduledTimestampMs: (_a = message.call.time) !== null && _a !== void 0 ? _a : Date.now(),
|
|
401
|
-
callType: (_b = message.call.type) !== null && _b !== void 0 ? _b : 1,
|
|
402
|
-
title: message.call.title
|
|
403
|
-
}
|
|
404
|
-
};
|
|
405
|
-
}
|
|
406
|
-
else if ('paymentInvite' in message) {
|
|
407
|
-
m.paymentInviteMessage = {
|
|
408
|
-
serviceType: message.paymentInvite.type,
|
|
409
|
-
expiryTimestamp: message.paymentInvite.expiry
|
|
410
|
-
};
|
|
411
|
-
}
|
|
412
318
|
else if ('buttonReply' in message) {
|
|
413
319
|
switch (message.type) {
|
|
414
320
|
case 'template':
|
|
@@ -425,58 +331,17 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
425
331
|
type: WAProto_1.proto.Message.ButtonsResponseMessage.Type.DISPLAY_TEXT,
|
|
426
332
|
};
|
|
427
333
|
break;
|
|
428
|
-
case 'interactive':
|
|
429
|
-
m.interactiveResponseMessage = {
|
|
430
|
-
body: {
|
|
431
|
-
text: message.buttonReply.text,
|
|
432
|
-
format: WAProto_1.proto.Message.InteractiveResponseMessage.Body.Format.EXTENSIONS_1
|
|
433
|
-
},
|
|
434
|
-
nativeFlowResponseMessage: {
|
|
435
|
-
name: message.buttonReply.nativeFlow.name,
|
|
436
|
-
paramsJson: message.buttonReply.nativeFlow.paramsJson,
|
|
437
|
-
version: message.buttonReply.nativeFlow.version
|
|
438
|
-
}
|
|
439
|
-
};
|
|
440
|
-
break;
|
|
441
334
|
}
|
|
442
335
|
}
|
|
443
336
|
else if ('product' in message) {
|
|
444
|
-
const { imageMessage } =
|
|
445
|
-
m.productMessage = Types_1.WAProto.Message.ProductMessage.fromObject({
|
|
446
|
-
...message,
|
|
447
|
-
product: {
|
|
448
|
-
...message.product,
|
|
449
|
-
productImage: imageMessage,
|
|
450
|
-
}
|
|
451
|
-
});
|
|
452
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
453
|
-
m.productMessage.contextInfo = message.contextInfo;
|
|
454
|
-
}
|
|
455
|
-
if ('mentions' in message && !!message.mentions) {
|
|
456
|
-
m.productMessage.contextInfo = { mentionedJid: message.mentions };
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
else if ('order' in message) {
|
|
460
|
-
m.orderMessage = Types_1.WAProto.Message.OrderMessage.fromObject({
|
|
461
|
-
orderId: message.order.id,
|
|
462
|
-
thumbnail: message.order.thumbnail,
|
|
463
|
-
itemCount: message.order.itemCount,
|
|
464
|
-
status: message.order.status,
|
|
465
|
-
surface: message.order.surface,
|
|
466
|
-
orderTitle: message.order.title,
|
|
467
|
-
message: message.order.text,
|
|
468
|
-
sellerJid: message.order.seller,
|
|
469
|
-
token: message.order.token,
|
|
470
|
-
totalAmount1000: message.order.amount,
|
|
471
|
-
totalCurrencyCode: message.order.currency
|
|
472
|
-
});
|
|
337
|
+
const { imageMessage } = yield (0, exports.prepareWAMessageMedia)({ image: message.product.productImage }, options);
|
|
338
|
+
m.productMessage = Types_1.WAProto.Message.ProductMessage.fromObject(Object.assign(Object.assign({}, message), { product: Object.assign(Object.assign({}, message.product), { productImage: imageMessage }) }));
|
|
473
339
|
}
|
|
474
340
|
else if ('listReply' in message) {
|
|
475
|
-
m.listResponseMessage = {
|
|
341
|
+
m.listResponseMessage = Object.assign({}, message.listReply);
|
|
476
342
|
}
|
|
477
343
|
else if ('poll' in message) {
|
|
478
|
-
(
|
|
479
|
-
(_7 = message.poll).toAnnouncementGroup || (_7.toAnnouncementGroup = false);
|
|
344
|
+
(_b = message.poll).selectableCount || (_b.selectableCount = 0);
|
|
480
345
|
if (!Array.isArray(message.poll.values)) {
|
|
481
346
|
throw new boom_1.Boom('Invalid poll values', { statusCode: 400 });
|
|
482
347
|
}
|
|
@@ -488,125 +353,11 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
488
353
|
// encKey
|
|
489
354
|
messageSecret: message.poll.messageSecret || (0, crypto_1.randomBytes)(32),
|
|
490
355
|
};
|
|
491
|
-
|
|
356
|
+
m.pollCreationMessage = {
|
|
492
357
|
name: message.poll.name,
|
|
493
358
|
selectableOptionsCount: message.poll.selectableCount,
|
|
494
359
|
options: message.poll.values.map(optionName => ({ optionName })),
|
|
495
360
|
};
|
|
496
|
-
if (message.poll.toAnnouncementGroup) {
|
|
497
|
-
// poll v2 is for community announcement groups (single select and multiple)
|
|
498
|
-
m.pollCreationMessageV2 = pollCreationMessage;
|
|
499
|
-
}
|
|
500
|
-
else {
|
|
501
|
-
if (message.poll.selectableCount > 0) {
|
|
502
|
-
//poll v3 is for single select polls
|
|
503
|
-
m.pollCreationMessageV3 = pollCreationMessage;
|
|
504
|
-
}
|
|
505
|
-
else {
|
|
506
|
-
// poll v3 for multiple choice polls
|
|
507
|
-
m.pollCreationMessage = pollCreationMessage;
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
511
|
-
pollCreationMessage.contextInfo = message.contextInfo;
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
else if ('pollResult' in message) {
|
|
515
|
-
if (!Array.isArray(message.pollResult.votes)) {
|
|
516
|
-
throw new boom_1.Boom('Invalid poll votes result', { statusCode: 400 });
|
|
517
|
-
}
|
|
518
|
-
m.messageContextInfo = {
|
|
519
|
-
// encKey
|
|
520
|
-
messageSecret: message.pollResult.messageSecret || (0, crypto_1.randomBytes)(32),
|
|
521
|
-
};
|
|
522
|
-
const pollResultSnapshotMessage = {
|
|
523
|
-
name: message.pollResult.name,
|
|
524
|
-
pollVotes: message.pollResult.votes.map((option) => ({
|
|
525
|
-
optionName: option[0],
|
|
526
|
-
optionVoteCount: option[1]
|
|
527
|
-
})),
|
|
528
|
-
};
|
|
529
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
530
|
-
pollResultSnapshotMessage.contextInfo = message.contextInfo;
|
|
531
|
-
}
|
|
532
|
-
if ('mentions' in message && !!message.mentions) {
|
|
533
|
-
pollResultSnapshotMessage.contextInfo = { mentionedJid: message.mentions };
|
|
534
|
-
}
|
|
535
|
-
m.pollResultSnapshotMessage = pollResultSnapshotMessage;
|
|
536
|
-
}
|
|
537
|
-
else if ('event' in message) {
|
|
538
|
-
m.messageContextInfo = {
|
|
539
|
-
messageSecret: message.event.messageSecret || (0, crypto_1.randomBytes)(32),
|
|
540
|
-
};
|
|
541
|
-
m.eventMessage = { ...message.event };
|
|
542
|
-
}
|
|
543
|
-
else if ('inviteAdmin' in message) {
|
|
544
|
-
m.newsletterAdminInviteMessage = {};
|
|
545
|
-
m.newsletterAdminInviteMessage.inviteExpiration = message.inviteAdmin.inviteExpiration;
|
|
546
|
-
m.newsletterAdminInviteMessage.caption = message.inviteAdmin.text;
|
|
547
|
-
m.newsletterAdminInviteMessage.newsletterJid = message.inviteAdmin.jid;
|
|
548
|
-
m.newsletterAdminInviteMessage.newsletterName = message.inviteAdmin.subject;
|
|
549
|
-
m.newsletterAdminInviteMessage.jpegThumbnail = message.inviteAdmin.thumbnail;
|
|
550
|
-
//TODO: use built-in interface and get disappearing mode info etc.
|
|
551
|
-
//TODO: cache / use store!?
|
|
552
|
-
if (options.getProfilePicUrl) {
|
|
553
|
-
let pfpUrl;
|
|
554
|
-
try {
|
|
555
|
-
pfpUrl = await options.getProfilePicUrl(message.inviteAdmin.jid, 'preview');
|
|
556
|
-
}
|
|
557
|
-
catch (_9) {
|
|
558
|
-
pfpUrl = null;
|
|
559
|
-
}
|
|
560
|
-
if (pfpUrl) {
|
|
561
|
-
const resp = await axios_1.default.get(pfpUrl, { responseType: 'arraybuffer' });
|
|
562
|
-
if (resp.status === 200) {
|
|
563
|
-
m.newsletterAdminInviteMessage.jpegThumbnail = resp.data;
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
else {
|
|
567
|
-
m.newsletterAdminInviteMessage.jpegThumbnail = null;
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
}
|
|
571
|
-
else if ('requestPayment' in message) {
|
|
572
|
-
const sticker = ((_d = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _d === void 0 ? void 0 : _d.sticker) ?
|
|
573
|
-
await (0, exports.prepareWAMessageMedia)({ sticker: (_e = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _e === void 0 ? void 0 : _e.sticker, ...options }, options)
|
|
574
|
-
: null;
|
|
575
|
-
let notes = {};
|
|
576
|
-
if ((_f = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _f === void 0 ? void 0 : _f.sticker) {
|
|
577
|
-
notes = {
|
|
578
|
-
stickerMessage: {
|
|
579
|
-
...sticker === null || sticker === void 0 ? void 0 : sticker.stickerMessage,
|
|
580
|
-
contextInfo: {
|
|
581
|
-
stanzaId: (_h = (_g = options === null || options === void 0 ? void 0 : options.quoted) === null || _g === void 0 ? void 0 : _g.key) === null || _h === void 0 ? void 0 : _h.id,
|
|
582
|
-
participant: (_k = (_j = options === null || options === void 0 ? void 0 : options.quoted) === null || _j === void 0 ? void 0 : _j.key) === null || _k === void 0 ? void 0 : _k.participant,
|
|
583
|
-
quotedMessage: (_l = options === null || options === void 0 ? void 0 : options.quoted) === null || _l === void 0 ? void 0 : _l.message,
|
|
584
|
-
...(_m = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _m === void 0 ? void 0 : _m.contextInfo,
|
|
585
|
-
}
|
|
586
|
-
}
|
|
587
|
-
};
|
|
588
|
-
}
|
|
589
|
-
else if (message.requestPayment.note) {
|
|
590
|
-
notes = {
|
|
591
|
-
extendedTextMessage: {
|
|
592
|
-
text: message.requestPayment.note,
|
|
593
|
-
contextInfo: {
|
|
594
|
-
stanzaId: (_p = (_o = options === null || options === void 0 ? void 0 : options.quoted) === null || _o === void 0 ? void 0 : _o.key) === null || _p === void 0 ? void 0 : _p.id,
|
|
595
|
-
participant: (_r = (_q = options === null || options === void 0 ? void 0 : options.quoted) === null || _q === void 0 ? void 0 : _q.key) === null || _r === void 0 ? void 0 : _r.participant,
|
|
596
|
-
quotedMessage: (_s = options === null || options === void 0 ? void 0 : options.quoted) === null || _s === void 0 ? void 0 : _s.message,
|
|
597
|
-
...(_t = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _t === void 0 ? void 0 : _t.contextInfo,
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
};
|
|
601
|
-
}
|
|
602
|
-
m.requestPaymentMessage = Types_1.WAProto.Message.RequestPaymentMessage.fromObject({
|
|
603
|
-
expiryTimestamp: message.requestPayment.expiry,
|
|
604
|
-
amount1000: message.requestPayment.amount,
|
|
605
|
-
currencyCodeIso4217: message.requestPayment.currency,
|
|
606
|
-
requestFrom: message.requestPayment.from,
|
|
607
|
-
noteMessage: { ...notes },
|
|
608
|
-
background: (_u = message.requestPayment.background) !== null && _u !== void 0 ? _u : null,
|
|
609
|
-
});
|
|
610
361
|
}
|
|
611
362
|
else if ('sharePhoneNumber' in message) {
|
|
612
363
|
m.protocolMessage = {
|
|
@@ -617,11 +368,11 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
617
368
|
m.requestPhoneNumberMessage = {};
|
|
618
369
|
}
|
|
619
370
|
else {
|
|
620
|
-
m =
|
|
371
|
+
m = yield (0, exports.prepareWAMessageMedia)(message, options);
|
|
621
372
|
}
|
|
622
373
|
if ('buttons' in message && !!message.buttons) {
|
|
623
374
|
const buttonsMessage = {
|
|
624
|
-
buttons: message.buttons.map(b => ({
|
|
375
|
+
buttons: message.buttons.map(b => (Object.assign(Object.assign({}, b), { type: WAProto_1.proto.Message.ButtonsMessage.Button.Type.RESPONSE })))
|
|
625
376
|
};
|
|
626
377
|
if ('text' in message) {
|
|
627
378
|
buttonsMessage.contentText = message.text;
|
|
@@ -638,21 +389,11 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
638
389
|
if ('footer' in message && !!message.footer) {
|
|
639
390
|
buttonsMessage.footerText = message.footer;
|
|
640
391
|
}
|
|
641
|
-
if ('title' in message && !!message.title) {
|
|
642
|
-
buttonsMessage.text = message.title,
|
|
643
|
-
buttonsMessage.headerType = ButtonType.TEXT;
|
|
644
|
-
}
|
|
645
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
646
|
-
buttonsMessage.contextInfo = message.contextInfo;
|
|
647
|
-
}
|
|
648
|
-
if ('mentions' in message && !!message.mentions) {
|
|
649
|
-
buttonsMessage.contextInfo = { mentionedJid: message.mentions };
|
|
650
|
-
}
|
|
651
392
|
m = { buttonsMessage };
|
|
652
393
|
}
|
|
653
394
|
else if ('templateButtons' in message && !!message.templateButtons) {
|
|
654
395
|
const msg = {
|
|
655
|
-
hydratedButtons: message.
|
|
396
|
+
hydratedButtons: message.templateButtons
|
|
656
397
|
};
|
|
657
398
|
if ('text' in message) {
|
|
658
399
|
msg.hydratedContentText = message.text;
|
|
@@ -673,203 +414,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
673
414
|
}
|
|
674
415
|
};
|
|
675
416
|
}
|
|
676
|
-
if ('interactiveButtons' in message && !!message.interactiveButtons) {
|
|
677
|
-
const interactiveMessage = {
|
|
678
|
-
nativeFlowMessage: Types_1.WAProto.Message.InteractiveMessage.NativeFlowMessage.fromObject({
|
|
679
|
-
buttons: message.interactiveButtons,
|
|
680
|
-
})
|
|
681
|
-
};
|
|
682
|
-
if ('text' in message) {
|
|
683
|
-
body: interactiveMessage.body = {
|
|
684
|
-
text: message.text
|
|
685
|
-
};
|
|
686
|
-
header: interactiveMessage.header = {
|
|
687
|
-
title: message.title,
|
|
688
|
-
subtitle: message.subtitle,
|
|
689
|
-
hasMediaAttachment: (_v = message === null || message === void 0 ? void 0 : message.media) !== null && _v !== void 0 ? _v : false,
|
|
690
|
-
};
|
|
691
|
-
}
|
|
692
|
-
else {
|
|
693
|
-
if ('caption' in message) {
|
|
694
|
-
body: interactiveMessage.body = {
|
|
695
|
-
text: message.caption
|
|
696
|
-
};
|
|
697
|
-
header: interactiveMessage.header = {
|
|
698
|
-
title: message.title,
|
|
699
|
-
subtitle: message.subtitle,
|
|
700
|
-
hasMediaAttachment: (_w = message === null || message === void 0 ? void 0 : message.media) !== null && _w !== void 0 ? _w : false,
|
|
701
|
-
};
|
|
702
|
-
Object.assign(interactiveMessage.header, m);
|
|
703
|
-
}
|
|
704
|
-
}
|
|
705
|
-
if ('footer' in message && !!message.footer) {
|
|
706
|
-
footer: interactiveMessage.footer = {
|
|
707
|
-
text: message.footer
|
|
708
|
-
};
|
|
709
|
-
}
|
|
710
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
711
|
-
interactiveMessage.contextInfo = message.contextInfo;
|
|
712
|
-
}
|
|
713
|
-
if ('mentions' in message && !!message.mentions) {
|
|
714
|
-
interactiveMessage.contextInfo = { mentionedJid: message.mentions };
|
|
715
|
-
}
|
|
716
|
-
m = { interactiveMessage };
|
|
717
|
-
}
|
|
718
|
-
if ('shop' in message && !!message.shop) {
|
|
719
|
-
const interactiveMessage = {
|
|
720
|
-
shopStorefrontMessage: Types_1.WAProto.Message.InteractiveMessage.ShopMessage.fromObject({
|
|
721
|
-
surface: message.shop,
|
|
722
|
-
id: message.id
|
|
723
|
-
})
|
|
724
|
-
};
|
|
725
|
-
if ('text' in message) {
|
|
726
|
-
body: interactiveMessage.body = {
|
|
727
|
-
text: message.text
|
|
728
|
-
};
|
|
729
|
-
header: interactiveMessage.header = {
|
|
730
|
-
title: message.title,
|
|
731
|
-
subtitle: message.subtitle,
|
|
732
|
-
hasMediaAttachment: (_x = message === null || message === void 0 ? void 0 : message.media) !== null && _x !== void 0 ? _x : false,
|
|
733
|
-
};
|
|
734
|
-
}
|
|
735
|
-
else {
|
|
736
|
-
if ('caption' in message) {
|
|
737
|
-
body: interactiveMessage.body = {
|
|
738
|
-
text: message.caption
|
|
739
|
-
};
|
|
740
|
-
header: interactiveMessage.header = {
|
|
741
|
-
title: message.title,
|
|
742
|
-
subtitle: message.subtitle,
|
|
743
|
-
hasMediaAttachment: (_y = message === null || message === void 0 ? void 0 : message.media) !== null && _y !== void 0 ? _y : false,
|
|
744
|
-
};
|
|
745
|
-
Object.assign(interactiveMessage.header, m);
|
|
746
|
-
}
|
|
747
|
-
}
|
|
748
|
-
if ('footer' in message && !!message.footer) {
|
|
749
|
-
footer: interactiveMessage.footer = {
|
|
750
|
-
text: message.footer
|
|
751
|
-
};
|
|
752
|
-
}
|
|
753
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
754
|
-
interactiveMessage.contextInfo = message.contextInfo;
|
|
755
|
-
}
|
|
756
|
-
if ('mentions' in message && !!message.mentions) {
|
|
757
|
-
interactiveMessage.contextInfo = { mentionedJid: message.mentions };
|
|
758
|
-
}
|
|
759
|
-
m = { interactiveMessage };
|
|
760
|
-
}
|
|
761
|
-
if ('collection' in message && !!message.shop) {
|
|
762
|
-
const interactiveMessage = {
|
|
763
|
-
collectionMessage: Types_1.WAProto.Message.InteractiveMessage.CollectionMessage.fromObject({
|
|
764
|
-
bizJid: (_z = message === null || message === void 0 ? void 0 : message.collection) === null || _z === void 0 ? void 0 : _z.bizJid,
|
|
765
|
-
id: (_0 = message === null || message === void 0 ? void 0 : message.collection) === null || _0 === void 0 ? void 0 : _0.id,
|
|
766
|
-
messageVersion: (_1 = message === null || message === void 0 ? void 0 : message.collection) === null || _1 === void 0 ? void 0 : _1.version
|
|
767
|
-
})
|
|
768
|
-
};
|
|
769
|
-
if ('text' in message) {
|
|
770
|
-
body: interactiveMessage.body = {
|
|
771
|
-
text: message.text
|
|
772
|
-
};
|
|
773
|
-
header: interactiveMessage.header = {
|
|
774
|
-
title: message.title,
|
|
775
|
-
subtitle: message.subtitle,
|
|
776
|
-
hasMediaAttachment: (_2 = message === null || message === void 0 ? void 0 : message.media) !== null && _2 !== void 0 ? _2 : false,
|
|
777
|
-
};
|
|
778
|
-
}
|
|
779
|
-
else {
|
|
780
|
-
if ('caption' in message) {
|
|
781
|
-
body: interactiveMessage.body = {
|
|
782
|
-
text: message.caption
|
|
783
|
-
};
|
|
784
|
-
header: interactiveMessage.header = {
|
|
785
|
-
title: message.title,
|
|
786
|
-
subtitle: message.subtitle,
|
|
787
|
-
hasMediaAttachment: (_3 = message === null || message === void 0 ? void 0 : message.media) !== null && _3 !== void 0 ? _3 : false,
|
|
788
|
-
};
|
|
789
|
-
Object.assign(interactiveMessage.header, m);
|
|
790
|
-
}
|
|
791
|
-
}
|
|
792
|
-
if ('footer' in message && !!message.footer) {
|
|
793
|
-
footer: interactiveMessage.footer = {
|
|
794
|
-
text: message.footer
|
|
795
|
-
};
|
|
796
|
-
}
|
|
797
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
798
|
-
interactiveMessage.contextInfo = message.contextInfo;
|
|
799
|
-
}
|
|
800
|
-
if ('mentions' in message && !!message.mentions) {
|
|
801
|
-
interactiveMessage.contextInfo = { mentionedJid: message.mentions };
|
|
802
|
-
}
|
|
803
|
-
m = { interactiveMessage };
|
|
804
|
-
}
|
|
805
|
-
if ('cards' in message && !!message.cards) {
|
|
806
|
-
const slides = await Promise.all(message.cards.map(async (slide) => {
|
|
807
|
-
const { image, video, product, title, caption, footer, buttons } = slide;
|
|
808
|
-
let header;
|
|
809
|
-
if (product) {
|
|
810
|
-
const { imageMessage } = await (0, exports.prepareWAMessageMedia)({ image: product.productImage, ...options }, options);
|
|
811
|
-
header = {
|
|
812
|
-
productMesage: Types_1.WAProto.Message.ProductMessage.fromObject({
|
|
813
|
-
product: {
|
|
814
|
-
...product,
|
|
815
|
-
productImage: imageMessage,
|
|
816
|
-
},
|
|
817
|
-
...slide
|
|
818
|
-
})
|
|
819
|
-
};
|
|
820
|
-
}
|
|
821
|
-
else if (image) {
|
|
822
|
-
header = await (0, exports.prepareWAMessageMedia)({ image: image, ...options }, options);
|
|
823
|
-
}
|
|
824
|
-
else if (video) {
|
|
825
|
-
header = await (0, exports.prepareWAMessageMedia)({ video: video, ...options }, options);
|
|
826
|
-
}
|
|
827
|
-
const msg = {
|
|
828
|
-
header: {
|
|
829
|
-
title,
|
|
830
|
-
hasMediaAttachment: true,
|
|
831
|
-
...header
|
|
832
|
-
},
|
|
833
|
-
body: {
|
|
834
|
-
text: caption
|
|
835
|
-
},
|
|
836
|
-
footer: {
|
|
837
|
-
text: footer
|
|
838
|
-
},
|
|
839
|
-
nativeFlowMessage: {
|
|
840
|
-
buttons,
|
|
841
|
-
},
|
|
842
|
-
};
|
|
843
|
-
return msg;
|
|
844
|
-
}));
|
|
845
|
-
const interactiveMessage = {
|
|
846
|
-
carouselMessage: Types_1.WAProto.Message.InteractiveMessage.CarouselMessage.fromObject({
|
|
847
|
-
cards: slides
|
|
848
|
-
})
|
|
849
|
-
};
|
|
850
|
-
if ('text' in message) {
|
|
851
|
-
body: interactiveMessage.body = {
|
|
852
|
-
text: message.text
|
|
853
|
-
};
|
|
854
|
-
header: interactiveMessage.header = {
|
|
855
|
-
title: message.title,
|
|
856
|
-
subtitle: message.subtitle,
|
|
857
|
-
hasMediaAttachment: (_4 = message === null || message === void 0 ? void 0 : message.media) !== null && _4 !== void 0 ? _4 : false,
|
|
858
|
-
};
|
|
859
|
-
}
|
|
860
|
-
if ('footer' in message && !!message.footer) {
|
|
861
|
-
footer: interactiveMessage.footer = {
|
|
862
|
-
text: message.footer
|
|
863
|
-
};
|
|
864
|
-
}
|
|
865
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
|
866
|
-
interactiveMessage.contextInfo = message.contextInfo;
|
|
867
|
-
}
|
|
868
|
-
if ('mentions' in message && !!message.mentions) {
|
|
869
|
-
interactiveMessage.contextInfo = { mentionedJid: message.mentions };
|
|
870
|
-
}
|
|
871
|
-
m = { interactiveMessage };
|
|
872
|
-
}
|
|
873
417
|
if ('sections' in message && !!message.sections) {
|
|
874
418
|
const listMessage = {
|
|
875
419
|
sections: message.sections,
|
|
@@ -884,19 +428,7 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
884
428
|
if ('viewOnce' in message && !!message.viewOnce) {
|
|
885
429
|
m = { viewOnceMessage: { message: m } };
|
|
886
430
|
}
|
|
887
|
-
if ('
|
|
888
|
-
m = { viewOnceMessageV2: { message: m } };
|
|
889
|
-
}
|
|
890
|
-
if ('viewOnceV2Extension' in message && !!message.viewOnceV2Extension) {
|
|
891
|
-
m = { viewOnceMessageV2Extension: { message: m } };
|
|
892
|
-
}
|
|
893
|
-
if ('ephemeral' in message && !!message.ephemeral) {
|
|
894
|
-
m = { ephemeralMessage: { message: m } };
|
|
895
|
-
}
|
|
896
|
-
if ('lottie' in message && !!message.lottie) {
|
|
897
|
-
m = { lottieStickerMessage: { message: m } };
|
|
898
|
-
}
|
|
899
|
-
if ('mentions' in message && ((_5 = message.mentions) === null || _5 === void 0 ? void 0 : _5.length)) {
|
|
431
|
+
if ('mentions' in message && ((_a = message.mentions) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
900
432
|
const [messageType] = Object.keys(m);
|
|
901
433
|
m[messageType].contextInfo = m[messageType] || {};
|
|
902
434
|
m[messageType].contextInfo.mentionedJid = message.mentions;
|
|
@@ -917,10 +449,9 @@ const generateWAMessageContent = async (message, options) => {
|
|
|
917
449
|
m[messageType].contextInfo = message.contextInfo;
|
|
918
450
|
}
|
|
919
451
|
return Types_1.WAProto.Message.fromObject(m);
|
|
920
|
-
};
|
|
452
|
+
});
|
|
921
453
|
exports.generateWAMessageContent = generateWAMessageContent;
|
|
922
454
|
const generateWAMessageFromContent = (jid, message, options) => {
|
|
923
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
924
455
|
// set timestamp to now
|
|
925
456
|
// if not specified
|
|
926
457
|
if (!options.timestamp) {
|
|
@@ -930,7 +461,7 @@ const generateWAMessageFromContent = (jid, message, options) => {
|
|
|
930
461
|
const key = (0, exports.getContentType)(innerMessage);
|
|
931
462
|
const timestamp = (0, generics_1.unixTimestampSeconds)(options.timestamp);
|
|
932
463
|
const { quoted, userJid } = options;
|
|
933
|
-
if (quoted
|
|
464
|
+
if (quoted) {
|
|
934
465
|
const participant = quoted.key.fromMe ? userJid : (quoted.participant || quoted.key.participant || quoted.key.remoteJid);
|
|
935
466
|
let quotedMsg = (0, exports.normalizeMessageContent)(quoted.message);
|
|
936
467
|
const msgType = (0, exports.getContentType)(quotedMsg);
|
|
@@ -940,16 +471,7 @@ const generateWAMessageFromContent = (jid, message, options) => {
|
|
|
940
471
|
if (typeof quotedContent === 'object' && quotedContent && 'contextInfo' in quotedContent) {
|
|
941
472
|
delete quotedContent.contextInfo;
|
|
942
473
|
}
|
|
943
|
-
|
|
944
|
-
if (key === 'requestPaymentMessage') {
|
|
945
|
-
if (((_a = innerMessage === null || innerMessage === void 0 ? void 0 : innerMessage.requestPaymentMessage) === null || _a === void 0 ? void 0 : _a.noteMessage) && ((_c = (_b = innerMessage === null || innerMessage === void 0 ? void 0 : innerMessage.requestPaymentMessage) === null || _b === void 0 ? void 0 : _b.noteMessage) === null || _c === void 0 ? void 0 : _c.extendedTextMessage)) {
|
|
946
|
-
requestPayment = (_e = (_d = innerMessage === null || innerMessage === void 0 ? void 0 : innerMessage.requestPaymentMessage) === null || _d === void 0 ? void 0 : _d.noteMessage) === null || _e === void 0 ? void 0 : _e.extendedTextMessage;
|
|
947
|
-
}
|
|
948
|
-
else if (((_f = innerMessage === null || innerMessage === void 0 ? void 0 : innerMessage.requestPaymentMessage) === null || _f === void 0 ? void 0 : _f.noteMessage) && ((_h = (_g = innerMessage === null || innerMessage === void 0 ? void 0 : innerMessage.requestPaymentMessage) === null || _g === void 0 ? void 0 : _g.noteMessage) === null || _h === void 0 ? void 0 : _h.stickerMessage)) {
|
|
949
|
-
requestPayment = (_k = (_j = innerMessage.requestPaymentMessage) === null || _j === void 0 ? void 0 : _j.noteMessage) === null || _k === void 0 ? void 0 : _k.stickerMessage;
|
|
950
|
-
}
|
|
951
|
-
}
|
|
952
|
-
const contextInfo = (key === 'requestPaymentMessage' ? requestPayment.contextInfo : innerMessage[key].contextInfo) || {};
|
|
474
|
+
const contextInfo = innerMessage[key].contextInfo || {};
|
|
953
475
|
contextInfo.participant = (0, WABinary_1.jidNormalizedUser)(participant);
|
|
954
476
|
contextInfo.stanzaId = quoted.key.id;
|
|
955
477
|
contextInfo.quotedMessage = quotedMsg;
|
|
@@ -966,14 +488,8 @@ const generateWAMessageFromContent = (jid, message, options) => {
|
|
|
966
488
|
// and it's not a protocol message -- delete, toggle disappear message
|
|
967
489
|
key !== 'protocolMessage' &&
|
|
968
490
|
// already not converted to disappearing message
|
|
969
|
-
key !== 'ephemeralMessage'
|
|
970
|
-
|
|
971
|
-
!(0, WABinary_1.isJidNewsLetter)(jid)) {
|
|
972
|
-
innerMessage[key].contextInfo = {
|
|
973
|
-
...(innerMessage[key].contextInfo || {}),
|
|
974
|
-
expiration: options.ephemeralExpiration || Defaults_1.WA_DEFAULT_EPHEMERAL,
|
|
975
|
-
//ephemeralSettingTimestamp: options.ephemeralOptions.eph_setting_ts?.toString()
|
|
976
|
-
};
|
|
491
|
+
key !== 'ephemeralMessage') {
|
|
492
|
+
innerMessage[key].contextInfo = Object.assign(Object.assign({}, (innerMessage[key].contextInfo || {})), { expiration: options.ephemeralExpiration || Defaults_1.WA_DEFAULT_EPHEMERAL });
|
|
977
493
|
}
|
|
978
494
|
message = Types_1.WAProto.Message.fromObject(message);
|
|
979
495
|
const messageJSON = {
|
|
@@ -991,12 +507,12 @@ const generateWAMessageFromContent = (jid, message, options) => {
|
|
|
991
507
|
return Types_1.WAProto.WebMessageInfo.fromObject(messageJSON);
|
|
992
508
|
};
|
|
993
509
|
exports.generateWAMessageFromContent = generateWAMessageFromContent;
|
|
994
|
-
const generateWAMessage =
|
|
510
|
+
const generateWAMessage = (jid, content, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
995
511
|
var _a;
|
|
996
512
|
// ensure msg ID is with every log
|
|
997
513
|
options.logger = (_a = options === null || options === void 0 ? void 0 : options.logger) === null || _a === void 0 ? void 0 : _a.child({ msgId: options.messageId });
|
|
998
|
-
return (0, exports.generateWAMessageFromContent)(jid,
|
|
999
|
-
};
|
|
514
|
+
return (0, exports.generateWAMessageFromContent)(jid, yield (0, exports.generateWAMessageContent)(content, Object.assign({ newsletter: (0, WABinary_1.isJidNewsLetter)(jid) }, options)), options);
|
|
515
|
+
});
|
|
1000
516
|
exports.generateWAMessage = generateWAMessage;
|
|
1001
517
|
/** Get the key to access the true type of content */
|
|
1002
518
|
const getContentType = (content) => {
|
|
@@ -1156,7 +672,6 @@ function getAggregateVotesInPollMessage({ message, pollUpdates }, meId) {
|
|
|
1156
672
|
}
|
|
1157
673
|
return Object.values(voteHashMap);
|
|
1158
674
|
}
|
|
1159
|
-
exports.getAggregateVotesInPollMessage = getAggregateVotesInPollMessage;
|
|
1160
675
|
/** Given a list of message keys, aggregates them by chat & sender. Useful for sending read receipts in bulk */
|
|
1161
676
|
const aggregateMessageKeysNotFromMe = (keys) => {
|
|
1162
677
|
const keyMap = {};
|
|
@@ -1180,9 +695,9 @@ const REUPLOAD_REQUIRED_STATUS = [410, 404];
|
|
|
1180
695
|
/**
|
|
1181
696
|
* Downloads the given message. Throws an error if it's not a media message
|
|
1182
697
|
*/
|
|
1183
|
-
const downloadMediaMessage =
|
|
1184
|
-
const result =
|
|
1185
|
-
.catch(
|
|
698
|
+
const downloadMediaMessage = (message, type, options, ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
699
|
+
const result = yield downloadMsg()
|
|
700
|
+
.catch((error) => __awaiter(void 0, void 0, void 0, function* () {
|
|
1186
701
|
var _a;
|
|
1187
702
|
if (ctx) {
|
|
1188
703
|
if (axios_1.default.isAxiosError(error)) {
|
|
@@ -1190,48 +705,63 @@ const downloadMediaMessage = async (message, type, options, ctx) => {
|
|
|
1190
705
|
if (REUPLOAD_REQUIRED_STATUS.includes((_a = error.response) === null || _a === void 0 ? void 0 : _a.status)) {
|
|
1191
706
|
ctx.logger.info({ key: message.key }, 'sending reupload media request...');
|
|
1192
707
|
// request reupload
|
|
1193
|
-
message =
|
|
1194
|
-
const result =
|
|
708
|
+
message = yield ctx.reuploadRequest(message);
|
|
709
|
+
const result = yield downloadMsg();
|
|
1195
710
|
return result;
|
|
1196
711
|
}
|
|
1197
712
|
}
|
|
1198
713
|
}
|
|
1199
714
|
throw error;
|
|
1200
|
-
});
|
|
715
|
+
}));
|
|
1201
716
|
return result;
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
download
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
download = media;
|
|
1223
|
-
}
|
|
1224
|
-
const stream = await (0, messages_media_1.downloadContentFromMessage)(download, mediaType, options);
|
|
1225
|
-
if (type === 'buffer') {
|
|
1226
|
-
const bufferArray = [];
|
|
1227
|
-
for await (const chunk of stream) {
|
|
1228
|
-
bufferArray.push(chunk);
|
|
717
|
+
function downloadMsg() {
|
|
718
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
719
|
+
var _a, e_1, _b, _c;
|
|
720
|
+
const mContent = (0, exports.extractMessageContent)(message.message);
|
|
721
|
+
if (!mContent) {
|
|
722
|
+
throw new boom_1.Boom('No message present', { statusCode: 400, data: message });
|
|
723
|
+
}
|
|
724
|
+
const contentType = (0, exports.getContentType)(mContent);
|
|
725
|
+
let mediaType = contentType === null || contentType === void 0 ? void 0 : contentType.replace('Message', '');
|
|
726
|
+
const media = mContent[contentType];
|
|
727
|
+
if (!media || typeof media !== 'object' || (!('url' in media) && !('thumbnailDirectPath' in media))) {
|
|
728
|
+
throw new boom_1.Boom(`"${contentType}" message is not a media message`);
|
|
729
|
+
}
|
|
730
|
+
let download;
|
|
731
|
+
if ('thumbnailDirectPath' in media && !('url' in media)) {
|
|
732
|
+
download = {
|
|
733
|
+
directPath: media.thumbnailDirectPath,
|
|
734
|
+
mediaKey: media.mediaKey
|
|
735
|
+
};
|
|
736
|
+
mediaType = 'thumbnail-link';
|
|
1229
737
|
}
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
738
|
+
else {
|
|
739
|
+
download = media;
|
|
740
|
+
}
|
|
741
|
+
const stream = yield (0, messages_media_1.downloadContentFromMessage)(download, mediaType, options);
|
|
742
|
+
if (type === 'buffer') {
|
|
743
|
+
const bufferArray = [];
|
|
744
|
+
try {
|
|
745
|
+
for (var _d = true, stream_1 = __asyncValues(stream), stream_1_1; stream_1_1 = yield stream_1.next(), _a = stream_1_1.done, !_a; _d = true) {
|
|
746
|
+
_c = stream_1_1.value;
|
|
747
|
+
_d = false;
|
|
748
|
+
const chunk = _c;
|
|
749
|
+
bufferArray.push(chunk);
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
753
|
+
finally {
|
|
754
|
+
try {
|
|
755
|
+
if (!_d && !_a && (_b = stream_1.return)) yield _b.call(stream_1);
|
|
756
|
+
}
|
|
757
|
+
finally { if (e_1) throw e_1.error; }
|
|
758
|
+
}
|
|
759
|
+
return Buffer.concat(bufferArray);
|
|
760
|
+
}
|
|
761
|
+
return stream;
|
|
762
|
+
});
|
|
1233
763
|
}
|
|
1234
|
-
};
|
|
764
|
+
});
|
|
1235
765
|
exports.downloadMediaMessage = downloadMediaMessage;
|
|
1236
766
|
/** Checks whether the given message is a media message; if it is returns the inner content */
|
|
1237
767
|
const assertMediaContent = (content) => {
|