@rexxhayanasi/elaina-baileys 1.2.0-rc.8 → 1.2.0-rc.9
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/lib/Utils/newslettermedia.js +57 -1
- package/package.json +1 -1
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.prepareWAMessageMediaNewsletter = exports.getRawMediaUploadDataNewsletter = void 0;
|
|
4
|
+
exports.getWAUploadToServerNewsletter = exports.prepareWAMessageMediaNewsletter = exports.getRawMediaUploadDataNewsletter = void 0;
|
|
5
5
|
|
|
6
6
|
const crypto_1 = require("crypto");
|
|
7
7
|
const boom_1 = require("@hapi/boom");
|
|
8
8
|
const WAProto_1 = require("../../WAProto");
|
|
9
|
+
const axios_1 = require("axios");
|
|
10
|
+
const Defaults_1 = require("../Defaults");
|
|
9
11
|
|
|
10
12
|
function getRawMediaUploadDataNewsletter(buffer) {
|
|
11
13
|
if (!Buffer.isBuffer(buffer)) {
|
|
@@ -20,6 +22,60 @@ function getRawMediaUploadDataNewsletter(buffer) {
|
|
|
20
22
|
}
|
|
21
23
|
exports.getRawMediaUploadDataNewsletter = getRawMediaUploadDataNewsletter;
|
|
22
24
|
|
|
25
|
+
function getWAUploadToServerNewsletter({ customUploadHosts = [], fetchAgent, logger, options = {} }, refreshMediaConn) {
|
|
26
|
+
return async (buffer, { mediaType, fileEncSha256B64 }) => {
|
|
27
|
+
if (!Buffer.isBuffer(buffer)) {
|
|
28
|
+
throw new boom_1.Boom("Upload expects Buffer");
|
|
29
|
+
}
|
|
30
|
+
let uploadInfo = await refreshMediaConn(false);
|
|
31
|
+
const hosts = [...customUploadHosts, ...uploadInfo.hosts];
|
|
32
|
+
let urls;
|
|
33
|
+
for (const { hostname, maxContentLengthBytes } of hosts) {
|
|
34
|
+
const auth = encodeURIComponent(uploadInfo.auth);
|
|
35
|
+
let mediaPath = Defaults_1.MEDIA_PATH_MAP[mediaType];
|
|
36
|
+
if (!mediaPath) {
|
|
37
|
+
mediaPath = "/newsletter/newsletter-image";
|
|
38
|
+
} else {
|
|
39
|
+
mediaPath = mediaPath.replace("/mms/", "/newsletter/newsletter-");
|
|
40
|
+
}
|
|
41
|
+
const url = `https://${hostname}${mediaPath}/${fileEncSha256B64}?auth=${auth}&token=${fileEncSha256B64}`;
|
|
42
|
+
try {
|
|
43
|
+
if (maxContentLengthBytes && buffer.length > maxContentLengthBytes) {
|
|
44
|
+
throw new boom_1.Boom("Body too large", { statusCode: 413 });
|
|
45
|
+
}
|
|
46
|
+
const res = await axios_1.default.post(url, buffer, {
|
|
47
|
+
...options,
|
|
48
|
+
headers: {
|
|
49
|
+
"Content-Type": "application/octet-stream",
|
|
50
|
+
Origin: Defaults_1.DEFAULT_ORIGIN,
|
|
51
|
+
...(options.headers || {})
|
|
52
|
+
},
|
|
53
|
+
httpsAgent: fetchAgent,
|
|
54
|
+
responseType: "json",
|
|
55
|
+
maxBodyLength: Infinity,
|
|
56
|
+
maxContentLength: Infinity
|
|
57
|
+
});
|
|
58
|
+
const result = res.data;
|
|
59
|
+
if (result?.url || result?.direct_path) {
|
|
60
|
+
urls = {
|
|
61
|
+
mediaUrl: result.url,
|
|
62
|
+
directPath: result.direct_path
|
|
63
|
+
};
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
uploadInfo = await refreshMediaConn(true);
|
|
67
|
+
} catch (err) {
|
|
68
|
+
logger?.warn?.({ err }, `Newsletter upload failed on ${hostname}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (!urls) {
|
|
72
|
+
throw new boom_1.Boom("Newsletter media upload failed", { statusCode: 500 });
|
|
73
|
+
}
|
|
74
|
+
return urls;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
exports.getWAUploadToServerNewsletter = getWAUploadToServerNewsletter;
|
|
78
|
+
|
|
23
79
|
async function prepareWAMessageMediaNewsletter(message, options) {
|
|
24
80
|
if (!options || typeof options.upload !== "function") {
|
|
25
81
|
throw new boom_1.Boom("upload function is required");
|