fca-priyansh 19.0.1 → 20.0.0
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/.gitlab-ci.yml +22 -0
- package/CountTime.json +1 -0
- package/Extra/Balancer.js +49 -49
- package/Extra/BroadcastSystem.js +1 -0
- package/Extra/Bypass/956/index.js +233 -233
- package/Extra/Bypass/test/aaaa.json +169 -169
- package/Extra/Bypass/test/index.js +187 -187
- package/Extra/Database/index.js +468 -468
- package/Extra/ExtraAddons.js +82 -82
- package/Extra/ExtraFindUID.js +61 -61
- package/Extra/ExtraGetThread.js +365 -365
- package/Extra/ExtraScreenShot.js +430 -430
- package/Extra/ExtraUptimeRobot.js +142 -38
- package/Extra/Html/Classic/script.js +118 -118
- package/Extra/Html/Classic/style.css +7 -7
- package/Extra/Security/Base/Step_1.js +5 -5
- package/Extra/Security/Base/Step_2.js +22 -22
- package/Extra/Security/Base/Step_3.js +22 -22
- package/Extra/Security/Base/index.js +190 -190
- package/Extra/Security/Index.js +4 -4
- package/Extra/Security/Step_1.js +5 -5
- package/Extra/Security/Step_2.js +22 -22
- package/Extra/Security/Step_3.js +22 -22
- package/Extra/Src/Change_Environment.js +24 -24
- package/Extra/Src/Check_Update.js +66 -66
- package/Extra/Src/History.js +114 -114
- package/Extra/Src/Instant_Update.js +64 -64
- package/Extra/Src/Last-Run.js +64 -64
- package/Extra/Src/Premium.js +81 -81
- package/Extra/Src/Websocket.js +212 -212
- package/Extra/Src/uuid.js +137 -137
- package/Func/AcceptAgreement.js +31 -31
- package/Func/ClearCache.js +64 -64
- package/Func/ReportV1.js +54 -54
- package/LICENSE +21 -21
- package/Language/index.json +228 -228
- package/Main.js +1 -1290
- package/README.md +198 -198
- package/broadcast.js +1 -44
- package/errorHandler.js +151 -0
- package/index.js +1 -448
- package/logger.js +69 -66
- package/package.json +99 -98
- package/src/Dev_Horizon_Data.js +124 -124
- package/src/Dev_getThreadInfoOLD.js +421 -421
- package/src/Dev_shareTest2.js +68 -68
- package/src/Dev_shareTest3.js +71 -71
- package/src/Premium.js +24 -24
- package/src/Screenshot.js +82 -82
- package/src/addExternalModule.js +16 -16
- package/src/addUserToGroup.js +79 -79
- package/src/changeAdminStatus.js +79 -79
- package/src/changeArchivedStatus.js +41 -41
- package/src/changeAvt.js +84 -84
- package/src/changeBio.js +65 -65
- package/src/changeBlockedStatus.js +36 -36
- package/src/changeGroupImage.js +106 -106
- package/src/changeNickname.js +45 -45
- package/src/changeThreadColor.js +62 -62
- package/src/changeThreadEmoji.js +42 -42
- package/src/changeThreadTheme.js +263 -0
- package/src/comment.js +244 -0
- package/src/createNewGroup.js +70 -70
- package/src/createPoll.js +60 -60
- package/src/deleteMessage.js +45 -45
- package/src/deleteThread.js +43 -43
- package/src/editMessage.js +71 -71
- package/src/follow.js +119 -0
- package/src/forwardAttachment.js +48 -48
- package/src/friend.js +383 -0
- package/src/getAccessToken.js +27 -27
- package/src/getCurrentUserID.js +7 -7
- package/src/getEmojiUrl.js +27 -27
- package/src/getFriendsList.js +73 -73
- package/src/getMessage.js +102 -102
- package/src/getPendingFriendRequests.js +45 -0
- package/src/getThreadHistory.js +537 -537
- package/src/getThreadInfo.js +424 -423
- package/src/getThreadInfoOLD.js +421 -421
- package/src/getThreadList.js +213 -213
- package/src/getThreadMain.js +219 -219
- package/src/getThreadPictures.js +59 -59
- package/src/getUID.js +58 -58
- package/src/getUserID.js +62 -62
- package/src/getUserInfo.js +112 -112
- package/src/getUserInfoMain.js +64 -64
- package/src/getUserInfoV2.js +31 -31
- package/src/getUserInfoV3.js +62 -62
- package/src/getUserInfoV4.js +54 -54
- package/src/getUserInfoV5.js +60 -60
- package/src/handleFriendRequest.js +46 -46
- package/src/handleMessageRequest.js +49 -49
- package/src/httpGet.js +49 -49
- package/src/httpPost.js +48 -48
- package/src/httpPostFormData.js +40 -40
- package/src/listenMqtt.js +1 -956
- package/src/listenMqttV1.js +832 -846
- package/src/logout.js +68 -68
- package/src/markAsDelivered.js +48 -48
- package/src/markAsRead.js +70 -70
- package/src/markAsReadAll.js +42 -42
- package/src/markAsSeen.js +51 -51
- package/src/muteThread.js +47 -47
- package/src/notes.js +279 -0
- package/src/removeUserFromGroup.js +49 -49
- package/src/resolvePhotoUrl.js +37 -37
- package/src/searchForThread.js +43 -43
- package/src/sendMention.js +325 -0
- package/src/sendMessage.js +1 -386
- package/src/sendMqttMessage.js +70 -70
- package/src/sendTypingIndicator.js +79 -80
- package/src/setMessageReaction.js +109 -109
- package/src/setPostReaction.js +101 -101
- package/src/setTitle.js +74 -74
- package/src/share.js +98 -0
- package/src/shareContact.js +55 -55
- package/src/shareLink.js +58 -58
- package/src/stickers.js +525 -0
- package/src/story.js +267 -0
- package/src/threadColors.js +38 -38
- package/src/unfriend.js +43 -43
- package/src/unsendMessage.js +47 -47
- package/src/unsendMqttMessage.js +65 -65
- package/test/data/shareAttach.js +146 -146
- package/test/data/test.txt +7 -7
- package/test/example-config.json +18 -18
- package/test/test-page.js +140 -140
- package/test/test.js +385 -385
- package/test/testv2.js +2 -2
- package/userAgentManager.js +129 -0
- package/utils.js +1 -3077
- package/.github/workflows/publish.yml +0 -20
- package/Extra/Src/Release_Memory.js +0 -160
- package/Extra/Src/test.js +0 -28
- package/SECURITY.md +0 -17
package/src/setPostReaction.js
CHANGED
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fix by NTKhang
|
|
3
|
-
* update as Thursday, 10 February 2022
|
|
4
|
-
* do not remove the author name to get more updates
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
"use strict";
|
|
8
|
-
|
|
9
|
-
var utils = require("../utils");
|
|
10
|
-
var log = require("npmlog");
|
|
11
|
-
|
|
12
|
-
function formatData(resData) {
|
|
13
|
-
return {
|
|
14
|
-
viewer_feedback_reaction_info: resData.feedback_react.feedback.viewer_feedback_reaction_info,
|
|
15
|
-
supported_reactions: resData.feedback_react.feedback.supported_reactions,
|
|
16
|
-
top_reactions: resData.feedback_react.feedback.top_reactions.edges,
|
|
17
|
-
reaction_count: resData.feedback_react.feedback.reaction_count
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
module.exports = function(defaultFuncs, api, ctx) {
|
|
22
|
-
return function setPostReaction(postID, type, callback) {
|
|
23
|
-
var resolveFunc = function(){};
|
|
24
|
-
var rejectFunc = function(){};
|
|
25
|
-
var returnPromise = new Promise(function (resolve, reject) {
|
|
26
|
-
resolveFunc = resolve;
|
|
27
|
-
rejectFunc = reject;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
if (!callback) {
|
|
31
|
-
if (utils.getType(type) === "Function" || utils.getType(type) === "AsyncFunction") {
|
|
32
|
-
callback = type;
|
|
33
|
-
type = 0;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
callback = function (err, data) {
|
|
37
|
-
if (err) {
|
|
38
|
-
return rejectFunc(err);
|
|
39
|
-
}
|
|
40
|
-
resolveFunc(data);
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
var map = {
|
|
46
|
-
unlike: 0,
|
|
47
|
-
like: 1,
|
|
48
|
-
heart: 2,
|
|
49
|
-
love: 16,
|
|
50
|
-
haha: 4,
|
|
51
|
-
wow: 3,
|
|
52
|
-
sad: 7,
|
|
53
|
-
angry: 8
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
if (utils.getType(type) !== "Number" && utils.getType(type) === "String") {
|
|
57
|
-
type = map[type.toLowerCase()];
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
throw {
|
|
61
|
-
error: "setPostReaction: Invalid reaction type"
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
var form = {
|
|
66
|
-
av: ctx.userID,
|
|
67
|
-
fb_api_caller_class: "RelayModern",
|
|
68
|
-
fb_api_req_friendly_name: "CometUFIFeedbackReactMutation",
|
|
69
|
-
doc_id: "4769042373179384",
|
|
70
|
-
variables: JSON.stringify({
|
|
71
|
-
input: {
|
|
72
|
-
actor_id: ctx.userID,
|
|
73
|
-
feedback_id: (new Buffer.from("feedback:" + postID)).toString("base64"),
|
|
74
|
-
feedback_reaction: type,
|
|
75
|
-
feedback_source: "OBJECT",
|
|
76
|
-
is_tracking_encrypted: true,
|
|
77
|
-
tracking: [],
|
|
78
|
-
session_id: "f7dd50dd-db6e-4598-8cd9-561d5002b423",
|
|
79
|
-
client_mutation_id: Math.round(Math.random() * 19).toString()
|
|
80
|
-
},
|
|
81
|
-
useDefaultActor: false,
|
|
82
|
-
scale: 3
|
|
83
|
-
})
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
defaultFuncs
|
|
87
|
-
.post("https://www.facebook.com/api/graphql/", ctx.jar, form)
|
|
88
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
89
|
-
.then(function(resData) {
|
|
90
|
-
if (resData.errors) {
|
|
91
|
-
throw resData;
|
|
92
|
-
}
|
|
93
|
-
return callback(null, formatData(resData.data));
|
|
94
|
-
})
|
|
95
|
-
.catch(function(err) {
|
|
96
|
-
log.error("setPostReaction", err);
|
|
97
|
-
return callback(err);
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
return returnPromise;
|
|
101
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* @fix by NTKhang
|
|
3
|
+
* update as Thursday, 10 February 2022
|
|
4
|
+
* do not remove the author name to get more updates
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
|
|
9
|
+
var utils = require("../utils");
|
|
10
|
+
var log = require("npmlog");
|
|
11
|
+
|
|
12
|
+
function formatData(resData) {
|
|
13
|
+
return {
|
|
14
|
+
viewer_feedback_reaction_info: resData.feedback_react.feedback.viewer_feedback_reaction_info,
|
|
15
|
+
supported_reactions: resData.feedback_react.feedback.supported_reactions,
|
|
16
|
+
top_reactions: resData.feedback_react.feedback.top_reactions.edges,
|
|
17
|
+
reaction_count: resData.feedback_react.feedback.reaction_count
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
|
22
|
+
return function setPostReaction(postID, type, callback) {
|
|
23
|
+
var resolveFunc = function(){};
|
|
24
|
+
var rejectFunc = function(){};
|
|
25
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
26
|
+
resolveFunc = resolve;
|
|
27
|
+
rejectFunc = reject;
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
if (!callback) {
|
|
31
|
+
if (utils.getType(type) === "Function" || utils.getType(type) === "AsyncFunction") {
|
|
32
|
+
callback = type;
|
|
33
|
+
type = 0;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
callback = function (err, data) {
|
|
37
|
+
if (err) {
|
|
38
|
+
return rejectFunc(err);
|
|
39
|
+
}
|
|
40
|
+
resolveFunc(data);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
var map = {
|
|
46
|
+
unlike: 0,
|
|
47
|
+
like: 1,
|
|
48
|
+
heart: 2,
|
|
49
|
+
love: 16,
|
|
50
|
+
haha: 4,
|
|
51
|
+
wow: 3,
|
|
52
|
+
sad: 7,
|
|
53
|
+
angry: 8
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
if (utils.getType(type) !== "Number" && utils.getType(type) === "String") {
|
|
57
|
+
type = map[type.toLowerCase()];
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
throw {
|
|
61
|
+
error: "setPostReaction: Invalid reaction type"
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
var form = {
|
|
66
|
+
av: ctx.userID,
|
|
67
|
+
fb_api_caller_class: "RelayModern",
|
|
68
|
+
fb_api_req_friendly_name: "CometUFIFeedbackReactMutation",
|
|
69
|
+
doc_id: "4769042373179384",
|
|
70
|
+
variables: JSON.stringify({
|
|
71
|
+
input: {
|
|
72
|
+
actor_id: ctx.userID,
|
|
73
|
+
feedback_id: (new Buffer.from("feedback:" + postID)).toString("base64"),
|
|
74
|
+
feedback_reaction: type,
|
|
75
|
+
feedback_source: "OBJECT",
|
|
76
|
+
is_tracking_encrypted: true,
|
|
77
|
+
tracking: [],
|
|
78
|
+
session_id: "f7dd50dd-db6e-4598-8cd9-561d5002b423",
|
|
79
|
+
client_mutation_id: Math.round(Math.random() * 19).toString()
|
|
80
|
+
},
|
|
81
|
+
useDefaultActor: false,
|
|
82
|
+
scale: 3
|
|
83
|
+
})
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
defaultFuncs
|
|
87
|
+
.post("https://www.facebook.com/api/graphql/", ctx.jar, form)
|
|
88
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
89
|
+
.then(function(resData) {
|
|
90
|
+
if (resData.errors) {
|
|
91
|
+
throw resData;
|
|
92
|
+
}
|
|
93
|
+
return callback(null, formatData(resData.data));
|
|
94
|
+
})
|
|
95
|
+
.catch(function(err) {
|
|
96
|
+
log.error("setPostReaction", err);
|
|
97
|
+
return callback(err);
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
return returnPromise;
|
|
101
|
+
};
|
|
102
102
|
};
|
package/src/setTitle.js
CHANGED
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var utils = require("../utils");
|
|
4
|
-
var log = require("npmlog");
|
|
5
|
-
|
|
6
|
-
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
-
return function setTitle(newTitle, threadID, callback) {
|
|
8
|
-
if (
|
|
9
|
-
!callback &&
|
|
10
|
-
(utils.getType(threadID) === "Function" ||
|
|
11
|
-
utils.getType(threadID) === "AsyncFunction")
|
|
12
|
-
) throw { error: "please pass a threadID as a second argument." };
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var resolveFunc = function () { };
|
|
16
|
-
var rejectFunc = function () { };
|
|
17
|
-
var returnPromise = new Promise(function (resolve, reject) {
|
|
18
|
-
resolveFunc = resolve;
|
|
19
|
-
rejectFunc = reject;
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
if (!callback) {
|
|
23
|
-
callback = function (err, data) {
|
|
24
|
-
if (err) return rejectFunc(err);
|
|
25
|
-
resolveFunc(data);
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
var messageAndOTID = utils.generateOfflineThreadingID();
|
|
30
|
-
var form = {
|
|
31
|
-
client: "mercury",
|
|
32
|
-
action_type: "ma-type:log-message",
|
|
33
|
-
author: "fbid:" + ctx.userID,
|
|
34
|
-
author_email: "",
|
|
35
|
-
coordinates: "",
|
|
36
|
-
timestamp: Date.now(),
|
|
37
|
-
timestamp_absolute: "Today",
|
|
38
|
-
timestamp_relative: utils.generateTimestampRelative(),
|
|
39
|
-
timestamp_time_passed: "0",
|
|
40
|
-
is_unread: false,
|
|
41
|
-
is_cleared: false,
|
|
42
|
-
is_forward: false,
|
|
43
|
-
is_filtered_content: false,
|
|
44
|
-
is_spoof_warning: false,
|
|
45
|
-
source: "source:chat:web",
|
|
46
|
-
"source_tags[0]": "source:chat",
|
|
47
|
-
status: "0",
|
|
48
|
-
offline_threading_id: messageAndOTID,
|
|
49
|
-
message_id: messageAndOTID,
|
|
50
|
-
threading_id: utils.generateThreadingID(ctx.clientID),
|
|
51
|
-
manual_retry_cnt: "0",
|
|
52
|
-
thread_fbid: threadID,
|
|
53
|
-
thread_name: newTitle,
|
|
54
|
-
thread_id: threadID,
|
|
55
|
-
log_message_type: "log:thread-name"
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
defaultFuncs
|
|
59
|
-
.post("https://www.facebook.com/messaging/set_thread_name/", ctx.jar, form)
|
|
60
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
61
|
-
.then(function (resData) {
|
|
62
|
-
if (resData.error && resData.error === 1545012) throw { error: "Cannot change chat title: Not member of chat." };
|
|
63
|
-
if (resData.error && resData.error === 1545003) throw { error: "Cannot set title of single-user chat." };
|
|
64
|
-
if (resData.error) throw resData;
|
|
65
|
-
return callback();
|
|
66
|
-
})
|
|
67
|
-
.catch(function (err) {
|
|
68
|
-
log.error("setTitle", err);
|
|
69
|
-
return callback(err);
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
return returnPromise;
|
|
73
|
-
};
|
|
74
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
|
+
|
|
6
|
+
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
+
return function setTitle(newTitle, threadID, callback) {
|
|
8
|
+
if (
|
|
9
|
+
!callback &&
|
|
10
|
+
(utils.getType(threadID) === "Function" ||
|
|
11
|
+
utils.getType(threadID) === "AsyncFunction")
|
|
12
|
+
) throw { error: "please pass a threadID as a second argument." };
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var resolveFunc = function () { };
|
|
16
|
+
var rejectFunc = function () { };
|
|
17
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
18
|
+
resolveFunc = resolve;
|
|
19
|
+
rejectFunc = reject;
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
if (!callback) {
|
|
23
|
+
callback = function (err, data) {
|
|
24
|
+
if (err) return rejectFunc(err);
|
|
25
|
+
resolveFunc(data);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var messageAndOTID = utils.generateOfflineThreadingID();
|
|
30
|
+
var form = {
|
|
31
|
+
client: "mercury",
|
|
32
|
+
action_type: "ma-type:log-message",
|
|
33
|
+
author: "fbid:" + ctx.userID,
|
|
34
|
+
author_email: "",
|
|
35
|
+
coordinates: "",
|
|
36
|
+
timestamp: Date.now(),
|
|
37
|
+
timestamp_absolute: "Today",
|
|
38
|
+
timestamp_relative: utils.generateTimestampRelative(),
|
|
39
|
+
timestamp_time_passed: "0",
|
|
40
|
+
is_unread: false,
|
|
41
|
+
is_cleared: false,
|
|
42
|
+
is_forward: false,
|
|
43
|
+
is_filtered_content: false,
|
|
44
|
+
is_spoof_warning: false,
|
|
45
|
+
source: "source:chat:web",
|
|
46
|
+
"source_tags[0]": "source:chat",
|
|
47
|
+
status: "0",
|
|
48
|
+
offline_threading_id: messageAndOTID,
|
|
49
|
+
message_id: messageAndOTID,
|
|
50
|
+
threading_id: utils.generateThreadingID(ctx.clientID),
|
|
51
|
+
manual_retry_cnt: "0",
|
|
52
|
+
thread_fbid: threadID,
|
|
53
|
+
thread_name: newTitle,
|
|
54
|
+
thread_id: threadID,
|
|
55
|
+
log_message_type: "log:thread-name"
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
defaultFuncs
|
|
59
|
+
.post("https://www.facebook.com/messaging/set_thread_name/", ctx.jar, form)
|
|
60
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
61
|
+
.then(function (resData) {
|
|
62
|
+
if (resData.error && resData.error === 1545012) throw { error: "Cannot change chat title: Not member of chat." };
|
|
63
|
+
if (resData.error && resData.error === 1545003) throw { error: "Cannot set title of single-user chat." };
|
|
64
|
+
if (resData.error) throw resData;
|
|
65
|
+
return callback();
|
|
66
|
+
})
|
|
67
|
+
.catch(function (err) {
|
|
68
|
+
log.error("setTitle", err);
|
|
69
|
+
return callback(err);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
return returnPromise;
|
|
73
|
+
};
|
|
74
|
+
};
|
package/src/share.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Share API Module
|
|
5
|
+
* Get preview information for Facebook posts
|
|
6
|
+
*
|
|
7
|
+
* @author Priyansh Rajput
|
|
8
|
+
* @github https://github.com/priyanshufsdev
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
var utils = require("../utils");
|
|
13
|
+
var log = require("npmlog");
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Format preview result from GraphQL response
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
function formatPreviewResult(data) {
|
|
20
|
+
if (data.errors) {
|
|
21
|
+
throw data.errors[0];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var previewData = data.data?.xma_preview_data;
|
|
25
|
+
if (!previewData) {
|
|
26
|
+
throw { error: "Could not generate a preview for this post." };
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
postID: previewData.post_id,
|
|
31
|
+
header: previewData.header_title,
|
|
32
|
+
subtitle: previewData.subtitle_text,
|
|
33
|
+
title: previewData.title_text,
|
|
34
|
+
previewImage: previewData.preview_url,
|
|
35
|
+
favicon: previewData.favicon_url,
|
|
36
|
+
headerImage: previewData.header_image_url
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
|
41
|
+
/**
|
|
42
|
+
* Get preview information for a Facebook post
|
|
43
|
+
* Useful for sharing posts or getting post metadata
|
|
44
|
+
*
|
|
45
|
+
* @param {string} postID - The ID of the post to preview
|
|
46
|
+
* @param {function} callback - Optional callback function
|
|
47
|
+
* @returns {Promise<object>}
|
|
48
|
+
*/
|
|
49
|
+
return function getPostPreview(postID, callback) {
|
|
50
|
+
var resolveFunc = function() {};
|
|
51
|
+
var rejectFunc = function() {};
|
|
52
|
+
var returnPromise = new Promise(function(resolve, reject) {
|
|
53
|
+
resolveFunc = resolve;
|
|
54
|
+
rejectFunc = reject;
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
if (!callback) {
|
|
58
|
+
callback = function(err, data) {
|
|
59
|
+
if (err) return rejectFunc(err);
|
|
60
|
+
resolveFunc(data);
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Validation
|
|
65
|
+
if (!postID) {
|
|
66
|
+
var error = 'A postID is required to generate a preview.';
|
|
67
|
+
log.error('share', error);
|
|
68
|
+
return callback({ error: error });
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
var variables = {
|
|
72
|
+
shareable_id: postID.toString(),
|
|
73
|
+
scale: 3
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
var form = {
|
|
77
|
+
fb_api_caller_class: 'RelayModern',
|
|
78
|
+
fb_api_req_friendly_name: 'CometXMAProxyShareablePreviewQuery',
|
|
79
|
+
variables: JSON.stringify(variables),
|
|
80
|
+
doc_id: '28939050904374351'
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
defaultFuncs
|
|
84
|
+
.post("https://www.facebook.com/api/graphql/", ctx.jar, form)
|
|
85
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
86
|
+
.then(function(resData) {
|
|
87
|
+
var result = formatPreviewResult(resData);
|
|
88
|
+
log.info('share', 'Generated preview for post: ' + postID);
|
|
89
|
+
callback(null, result);
|
|
90
|
+
})
|
|
91
|
+
.catch(function(err) {
|
|
92
|
+
log.error('share', err);
|
|
93
|
+
callback(err);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
return returnPromise;
|
|
97
|
+
};
|
|
98
|
+
};
|
package/src/shareContact.js
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
/* eslint-disable linebreak-style */
|
|
2
|
-
"use strict";
|
|
3
|
-
|
|
4
|
-
var utils = require("../utils");
|
|
5
|
-
|
|
6
|
-
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
-
return function shareContact(text, senderID, threadID, callback) {
|
|
8
|
-
var resolveFunc = function () { };
|
|
9
|
-
var rejectFunc = function () { };
|
|
10
|
-
|
|
11
|
-
var returnPromise = new Promise(function (resolve, reject) {
|
|
12
|
-
resolveFunc = resolve;
|
|
13
|
-
rejectFunc = reject;
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
if (!callback || utils.getType(callback) != "Function" && utils.getType(callback) != "AsyncFunction") {
|
|
17
|
-
callback = function (err, data) {
|
|
18
|
-
if (err) return rejectFunc(err);
|
|
19
|
-
resolveFunc(data);
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
ctx.mqttClient.publish('/ls_req',
|
|
23
|
-
JSON.stringify({
|
|
24
|
-
app_id: "2220391788200892",
|
|
25
|
-
payload: JSON.stringify({
|
|
26
|
-
tasks: [{
|
|
27
|
-
label: 359,
|
|
28
|
-
payload: JSON.stringify({
|
|
29
|
-
"contact_id": senderID,
|
|
30
|
-
"sync_group": 1,
|
|
31
|
-
"text": text || "",
|
|
32
|
-
"thread_id": threadID
|
|
33
|
-
}),
|
|
34
|
-
queue_name: 'xma_open_contact_share',
|
|
35
|
-
task_id: Math.random() * 1001 << 0,
|
|
36
|
-
failure_count: null,
|
|
37
|
-
}],
|
|
38
|
-
epoch_id: utils.generateOfflineThreadingID(),
|
|
39
|
-
version_id: '7214102258676893',
|
|
40
|
-
}),
|
|
41
|
-
request_id: ++ctx.req_ID,
|
|
42
|
-
type: 3
|
|
43
|
-
}),
|
|
44
|
-
{
|
|
45
|
-
qos: 1,
|
|
46
|
-
retain: false,
|
|
47
|
-
}
|
|
48
|
-
);
|
|
49
|
-
ctx.callback_Task[ctx.req_ID] = new Object({
|
|
50
|
-
callback,
|
|
51
|
-
type: "shareContact"
|
|
52
|
-
});
|
|
53
|
-
return returnPromise;
|
|
54
|
-
};
|
|
55
|
-
};
|
|
1
|
+
/* eslint-disable linebreak-style */
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var utils = require("../utils");
|
|
5
|
+
|
|
6
|
+
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
+
return function shareContact(text, senderID, threadID, callback) {
|
|
8
|
+
var resolveFunc = function () { };
|
|
9
|
+
var rejectFunc = function () { };
|
|
10
|
+
|
|
11
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
12
|
+
resolveFunc = resolve;
|
|
13
|
+
rejectFunc = reject;
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
if (!callback || utils.getType(callback) != "Function" && utils.getType(callback) != "AsyncFunction") {
|
|
17
|
+
callback = function (err, data) {
|
|
18
|
+
if (err) return rejectFunc(err);
|
|
19
|
+
resolveFunc(data);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
ctx.mqttClient.publish('/ls_req',
|
|
23
|
+
JSON.stringify({
|
|
24
|
+
app_id: "2220391788200892",
|
|
25
|
+
payload: JSON.stringify({
|
|
26
|
+
tasks: [{
|
|
27
|
+
label: 359,
|
|
28
|
+
payload: JSON.stringify({
|
|
29
|
+
"contact_id": senderID,
|
|
30
|
+
"sync_group": 1,
|
|
31
|
+
"text": text || "",
|
|
32
|
+
"thread_id": threadID
|
|
33
|
+
}),
|
|
34
|
+
queue_name: 'xma_open_contact_share',
|
|
35
|
+
task_id: Math.random() * 1001 << 0,
|
|
36
|
+
failure_count: null,
|
|
37
|
+
}],
|
|
38
|
+
epoch_id: utils.generateOfflineThreadingID(),
|
|
39
|
+
version_id: '7214102258676893',
|
|
40
|
+
}),
|
|
41
|
+
request_id: ++ctx.req_ID,
|
|
42
|
+
type: 3
|
|
43
|
+
}),
|
|
44
|
+
{
|
|
45
|
+
qos: 1,
|
|
46
|
+
retain: false,
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
ctx.callback_Task[ctx.req_ID] = new Object({
|
|
50
|
+
callback,
|
|
51
|
+
type: "shareContact"
|
|
52
|
+
});
|
|
53
|
+
return returnPromise;
|
|
54
|
+
};
|
|
55
|
+
};
|
package/src/shareLink.js
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var utils = require("../utils");
|
|
4
|
-
var log = require("npmlog");
|
|
5
|
-
|
|
6
|
-
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
-
return async function shareLink(text, url, threadID, callback) {
|
|
8
|
-
var resolveFunc = function () { };
|
|
9
|
-
var rejectFunc = function () { };
|
|
10
|
-
var returnPromise = new Promise(function (resolve, reject) {
|
|
11
|
-
resolveFunc = resolve;
|
|
12
|
-
rejectFunc = reject;
|
|
13
|
-
});
|
|
14
|
-
if (!callback) {
|
|
15
|
-
callback = function (err, data) {
|
|
16
|
-
if (err) return rejectFunc(err);
|
|
17
|
-
resolveFunc(data);
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
mqttClient.publish('/ls_req',
|
|
21
|
-
JSON.stringify({
|
|
22
|
-
"app_id": "2220391788200892",
|
|
23
|
-
"payload": JSON.stringify({
|
|
24
|
-
tasks: [{
|
|
25
|
-
label: 46,
|
|
26
|
-
payload: JSON.stringify({
|
|
27
|
-
"otid": utils.generateOfflineThreadingID(),
|
|
28
|
-
"source": 524289,
|
|
29
|
-
"sync_group": 1,
|
|
30
|
-
"send_type": 6,
|
|
31
|
-
"mark_thread_read": 0,
|
|
32
|
-
"url": url || "https://www.facebook.com/Lazic.Kanzu",
|
|
33
|
-
"text": text || "",
|
|
34
|
-
"thread_id": threadID,
|
|
35
|
-
"initiating_source": 0
|
|
36
|
-
}),
|
|
37
|
-
queue_name: threadID,
|
|
38
|
-
task_id: Math.random() * 1001 << 0,
|
|
39
|
-
failure_count: null,
|
|
40
|
-
}],
|
|
41
|
-
epoch_id: utils.generateOfflineThreadingID(),
|
|
42
|
-
version_id: '7191105584331330',
|
|
43
|
-
}),
|
|
44
|
-
"request_id": ++ctx.req_ID,
|
|
45
|
-
"type": 3
|
|
46
|
-
}),
|
|
47
|
-
{
|
|
48
|
-
qos: 1,
|
|
49
|
-
retain: false,
|
|
50
|
-
}
|
|
51
|
-
)
|
|
52
|
-
ctx.callback_Task[ctx.req_ID] = new Object({
|
|
53
|
-
callback,
|
|
54
|
-
type: "shareLink"
|
|
55
|
-
});
|
|
56
|
-
return returnPromise;
|
|
57
|
-
};
|
|
58
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
|
+
|
|
6
|
+
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
+
return async function shareLink(text, url, threadID, callback) {
|
|
8
|
+
var resolveFunc = function () { };
|
|
9
|
+
var rejectFunc = function () { };
|
|
10
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
11
|
+
resolveFunc = resolve;
|
|
12
|
+
rejectFunc = reject;
|
|
13
|
+
});
|
|
14
|
+
if (!callback) {
|
|
15
|
+
callback = function (err, data) {
|
|
16
|
+
if (err) return rejectFunc(err);
|
|
17
|
+
resolveFunc(data);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
mqttClient.publish('/ls_req',
|
|
21
|
+
JSON.stringify({
|
|
22
|
+
"app_id": "2220391788200892",
|
|
23
|
+
"payload": JSON.stringify({
|
|
24
|
+
tasks: [{
|
|
25
|
+
label: 46,
|
|
26
|
+
payload: JSON.stringify({
|
|
27
|
+
"otid": utils.generateOfflineThreadingID(),
|
|
28
|
+
"source": 524289,
|
|
29
|
+
"sync_group": 1,
|
|
30
|
+
"send_type": 6,
|
|
31
|
+
"mark_thread_read": 0,
|
|
32
|
+
"url": url || "https://www.facebook.com/Lazic.Kanzu",
|
|
33
|
+
"text": text || "",
|
|
34
|
+
"thread_id": threadID,
|
|
35
|
+
"initiating_source": 0
|
|
36
|
+
}),
|
|
37
|
+
queue_name: threadID,
|
|
38
|
+
task_id: Math.random() * 1001 << 0,
|
|
39
|
+
failure_count: null,
|
|
40
|
+
}],
|
|
41
|
+
epoch_id: utils.generateOfflineThreadingID(),
|
|
42
|
+
version_id: '7191105584331330',
|
|
43
|
+
}),
|
|
44
|
+
"request_id": ++ctx.req_ID,
|
|
45
|
+
"type": 3
|
|
46
|
+
}),
|
|
47
|
+
{
|
|
48
|
+
qos: 1,
|
|
49
|
+
retain: false,
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
ctx.callback_Task[ctx.req_ID] = new Object({
|
|
53
|
+
callback,
|
|
54
|
+
type: "shareLink"
|
|
55
|
+
});
|
|
56
|
+
return returnPromise;
|
|
57
|
+
};
|
|
58
|
+
};
|