fca-faiz-babu 16.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/.github/workflows/publish.yml +20 -0
- package/.upm/store.json +1 -0
- package/CHANGELOG.md +2 -0
- package/FAIZ-FCA.json +4 -0
- package/LICENSE-MIT +21 -0
- package/README.md +18 -0
- package/index.js +545 -0
- package/package.json +97 -0
- package/src/Dev_Horizon_Data.js +125 -0
- package/src/Dev_getThreadInfoOLD.js +422 -0
- package/src/Dev_shareTest2.js +68 -0
- package/src/Dev_shareTest3.js +71 -0
- package/src/Premium.js +25 -0
- package/src/Screenshot.js +83 -0
- package/src/addExternalModule.js +16 -0
- package/src/addUserToGroup.js +79 -0
- package/src/changeAdminStatus.js +79 -0
- package/src/changeArchivedStatus.js +41 -0
- package/src/changeAvt.js +85 -0
- package/src/changeBio.js +65 -0
- package/src/changeBlockedStatus.js +36 -0
- package/src/changeGroupImage.js +106 -0
- package/src/changeNickname.js +45 -0
- package/src/changeThreadColor.js +62 -0
- package/src/changeThreadEmoji.js +42 -0
- package/src/createNewGroup.js +70 -0
- package/src/createPoll.js +60 -0
- package/src/deleteMessage.js +45 -0
- package/src/deleteThread.js +43 -0
- package/src/editMessage.js +53 -0
- package/src/forwardAttachment.js +48 -0
- package/src/getAccessToken.js +28 -0
- package/src/getCurrentUserID.js +7 -0
- package/src/getEmojiUrl.js +27 -0
- package/src/getFriendsList.js +73 -0
- package/src/getMessage.js +103 -0
- package/src/getThreadHistory.js +537 -0
- package/src/getThreadInfo.js +424 -0
- package/src/getThreadInfoOLD.js +422 -0
- package/src/getThreadList.js +213 -0
- package/src/getThreadMain.js +220 -0
- package/src/getThreadPictures.js +59 -0
- package/src/getUID.js +59 -0
- package/src/getUserID.js +62 -0
- package/src/getUserInfo.js +112 -0
- package/src/getUserInfoMain.js +65 -0
- package/src/getUserInfoV2.js +32 -0
- package/src/getUserInfoV3.js +63 -0
- package/src/getUserInfoV4.js +55 -0
- package/src/getUserInfoV5.js +61 -0
- package/src/handleFriendRequest.js +46 -0
- package/src/handleMessageRequest.js +49 -0
- package/src/httpGet.js +49 -0
- package/src/httpPost.js +48 -0
- package/src/httpPostFormData.js +41 -0
- package/src/listenMqtt.js +956 -0
- package/src/listenMqttV1.js +846 -0
- package/src/logout.js +68 -0
- package/src/markAsDelivered.js +48 -0
- package/src/markAsRead.js +70 -0
- package/src/markAsReadAll.js +43 -0
- package/src/markAsSeen.js +51 -0
- package/src/muteThread.js +47 -0
- package/src/removeUserFromGroup.js +49 -0
- package/src/resolvePhotoUrl.js +37 -0
- package/src/searchForThread.js +43 -0
- package/src/sendMessage.js +386 -0
- package/src/sendMqttMessage.js +71 -0
- package/src/sendTypingIndicator.js +80 -0
- package/src/setMessageReaction.js +109 -0
- package/src/setPostReaction.js +102 -0
- package/src/setTitle.js +74 -0
- package/src/shareContact.js +55 -0
- package/src/shareLink.js +58 -0
- package/src/threadColors.js +39 -0
- package/src/unfriend.js +43 -0
- package/src/unsendMessage.js +48 -0
- package/src/unsendMqttMessage.js +66 -0
- package/test/data/shareAttach.js +146 -0
- package/test/data/something.mov +1 -0
- package/test/data/test.png +1 -0
- package/test/data/test.txt +1 -0
- package/test/example-config.json +18 -0
- package/test/test-page.js +140 -0
- package/test/test.js +385 -0
- package/utils.js +1552 -0
@@ -0,0 +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
|
+
};
|
102
|
+
};
|
package/src/setTitle.js
ADDED
@@ -0,0 +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
|
+
};
|
@@ -0,0 +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
|
+
};
|
package/src/shareLink.js
ADDED
@@ -0,0 +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
|
+
};
|
@@ -0,0 +1,39 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
module.exports = function(_defaultFuncs, _api, _ctx) {
|
4
|
+
// Currently the only colors that can be passed to api.changeThreadColor(); may change if Facebook adds more
|
5
|
+
return {
|
6
|
+
////MessengerBlue: null,
|
7
|
+
////Viking: "#44bec7",
|
8
|
+
////GoldenPoppy: "#ffc300",
|
9
|
+
////RadicalRed: "#fa3c4c",
|
10
|
+
////Shocking: "#d696bb",
|
11
|
+
////PictonBlue: "#6699cc",
|
12
|
+
////FreeSpeechGreen: "#13cf13",
|
13
|
+
////Pumpkin: "#ff7e29",
|
14
|
+
////LightCoral: "#e68585",
|
15
|
+
////MediumSlateBlue: "#7646ff",
|
16
|
+
////DeepSkyBlue: "#20cef5",
|
17
|
+
////Fern: "#67b868",
|
18
|
+
////Cameo: "#d4a88c",
|
19
|
+
////BrilliantRose: "#ff5ca1",
|
20
|
+
////BilobaFlower: "#a695c7"
|
21
|
+
DefaultBlue: "196241301102133",
|
22
|
+
HotPink: "169463077092846",
|
23
|
+
AquaBlue: "2442142322678320",
|
24
|
+
BrightPurple: "234137870477637",
|
25
|
+
CoralPink: "980963458735625",
|
26
|
+
Orange: "175615189761153",
|
27
|
+
Green: "2136751179887052",
|
28
|
+
LavenderPurple: "2058653964378557",
|
29
|
+
Red: "2129984390566328",
|
30
|
+
Yellow: "174636906462322",
|
31
|
+
TealBlue: "1928399724138152",
|
32
|
+
Aqua: "417639218648241",
|
33
|
+
Mango: "930060997172551",
|
34
|
+
Berry: "164535220883264",
|
35
|
+
Citrus: "370940413392601",
|
36
|
+
Candy: "205488546921017",
|
37
|
+
StarWars: "809305022860427"
|
38
|
+
};
|
39
|
+
};
|
package/src/unfriend.js
ADDED
@@ -0,0 +1,43 @@
|
|
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 unfriend(userID, 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
|
+
|
15
|
+
if (!callback) {
|
16
|
+
callback = function (err, friendList) {
|
17
|
+
if (err) return rejectFunc(err);
|
18
|
+
resolveFunc(friendList);
|
19
|
+
};
|
20
|
+
}
|
21
|
+
|
22
|
+
var form = {
|
23
|
+
uid: userID,
|
24
|
+
unref: "bd_friends_tab",
|
25
|
+
floc: "friends_tab",
|
26
|
+
"nctr[_mod]": "pagelet_timeline_app_collection_" + ctx.userID + ":2356318349:2"
|
27
|
+
};
|
28
|
+
|
29
|
+
defaultFuncs
|
30
|
+
.post("https://www.facebook.com/ajax/profile/removefriendconfirm.php", ctx.jar, form)
|
31
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
32
|
+
.then(function (resData) {
|
33
|
+
if (resData.error) throw resData;
|
34
|
+
return callback();
|
35
|
+
})
|
36
|
+
.catch(function (err) {
|
37
|
+
log.error("unfriend", err);
|
38
|
+
return callback(err);
|
39
|
+
});
|
40
|
+
|
41
|
+
return returnPromise;
|
42
|
+
};
|
43
|
+
};
|
@@ -0,0 +1,48 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
const Balancer = require('../Extra/Balancer.js');
|
4
|
+
var utils = require("../utils");
|
5
|
+
var log = require("npmlog");
|
6
|
+
|
7
|
+
module.exports = function (defaultFuncs, api, ctx) {
|
8
|
+
//const BalancerInstance = new Balancer(api.unsendMessage, unsendMessage, 0.85);
|
9
|
+
|
10
|
+
function unsendMessage(messageID, threadID, callback) {
|
11
|
+
var resolveFunc = function () { };
|
12
|
+
var rejectFunc = function () { };
|
13
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
14
|
+
resolveFunc = resolve;
|
15
|
+
rejectFunc = reject;
|
16
|
+
});
|
17
|
+
|
18
|
+
if (!callback) {
|
19
|
+
callback = function (err, friendList) {
|
20
|
+
if (err) return rejectFunc(err);
|
21
|
+
resolveFunc(friendList);
|
22
|
+
};
|
23
|
+
}
|
24
|
+
|
25
|
+
if (threadID) return api.unsendMqttMessage(threadID, messageID, callback);
|
26
|
+
else {
|
27
|
+
var form = {
|
28
|
+
message_id: messageID
|
29
|
+
};
|
30
|
+
|
31
|
+
defaultFuncs
|
32
|
+
.post("https://www.facebook.com/messaging/unsend_message/", ctx.jar, form)
|
33
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
34
|
+
.then(function (resData) {
|
35
|
+
if (resData.error) throw resData;
|
36
|
+
return callback();
|
37
|
+
})
|
38
|
+
.catch(function (err) {
|
39
|
+
log.error("unsendMessage", err);
|
40
|
+
return callback(err);
|
41
|
+
});
|
42
|
+
|
43
|
+
return returnPromise;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
return unsendMessage;
|
48
|
+
};
|
@@ -0,0 +1,66 @@
|
|
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(threadID, messageID ,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(messageID) === "AsyncFunction" || !callback && utils.getType(messageID) === "Function") messageID = callback;
|
17
|
+
|
18
|
+
if (!callback) {
|
19
|
+
callback = function (err, data) {
|
20
|
+
if (err) return rejectFunc(err);
|
21
|
+
resolveFunc(data);
|
22
|
+
};
|
23
|
+
}
|
24
|
+
|
25
|
+
const Payload = {
|
26
|
+
message_id:messageID,
|
27
|
+
thread_key:threadID,
|
28
|
+
sync_group: 1
|
29
|
+
};
|
30
|
+
|
31
|
+
if (messageID != undefined || messageID != null) Payload.reply_metadata = {
|
32
|
+
reply_source_id: messageID,
|
33
|
+
reply_source_type: 1,
|
34
|
+
reply_type: 0
|
35
|
+
};
|
36
|
+
|
37
|
+
const Form = JSON.stringify({
|
38
|
+
app_id: "2220391788200892",
|
39
|
+
payload: JSON.stringify({
|
40
|
+
tasks: [{
|
41
|
+
label: 33,
|
42
|
+
payload: JSON.stringify(Payload),
|
43
|
+
queue_name: "unsend_message",
|
44
|
+
task_id: Math.random() * 1001 << 0,
|
45
|
+
failure_count: null,
|
46
|
+
}],
|
47
|
+
epoch_id: utils.generateOfflineThreadingID(),
|
48
|
+
version_id: '9094446350588544',
|
49
|
+
|
50
|
+
}),
|
51
|
+
request_id: ++ctx.req_ID,
|
52
|
+
type: 3
|
53
|
+
});
|
54
|
+
|
55
|
+
ctx.mqttClient.publish('/ls_req', Form,{
|
56
|
+
qos: 1,
|
57
|
+
retain: false,
|
58
|
+
});
|
59
|
+
ctx.callback_Task[ctx.req_ID] = new Object({
|
60
|
+
callback,
|
61
|
+
type: "unsendMqttMessage",
|
62
|
+
});
|
63
|
+
|
64
|
+
return returnPromise;
|
65
|
+
};
|
66
|
+
};
|
@@ -0,0 +1,146 @@
|
|
1
|
+
module.exports = {
|
2
|
+
"delta": {
|
3
|
+
"attachments": [
|
4
|
+
{
|
5
|
+
"fbid": "1522004821162174",
|
6
|
+
"id": "1522004821162174",
|
7
|
+
"mercury": {
|
8
|
+
"app_attribution": null,
|
9
|
+
"attach_type": "share",
|
10
|
+
"name": null,
|
11
|
+
"url": null,
|
12
|
+
"rel": null,
|
13
|
+
"preview_url": null,
|
14
|
+
"preview_width": null,
|
15
|
+
"preview_height": null,
|
16
|
+
"large_preview_url": null,
|
17
|
+
"large_preview_width": null,
|
18
|
+
"large_preview_height": null,
|
19
|
+
"icon_type": null,
|
20
|
+
"metadata": null,
|
21
|
+
"thumbnail_url": null,
|
22
|
+
"share": {
|
23
|
+
"description": null,
|
24
|
+
"media": {
|
25
|
+
"animated_image": null,
|
26
|
+
"animated_image_size": {
|
27
|
+
"height": null,
|
28
|
+
"width": null
|
29
|
+
},
|
30
|
+
"image": null,
|
31
|
+
"image_size": {
|
32
|
+
"height": null,
|
33
|
+
"width": null
|
34
|
+
},
|
35
|
+
"duration": null,
|
36
|
+
"playable": null,
|
37
|
+
"source": null
|
38
|
+
},
|
39
|
+
"source": "Dimon - testing",
|
40
|
+
"style_list": [
|
41
|
+
"business_message_items", "fallback"
|
42
|
+
],
|
43
|
+
"title": "search engines",
|
44
|
+
"properties": null,
|
45
|
+
"uri": null,
|
46
|
+
"subattachments": [],
|
47
|
+
"deduplication_key": "abcde",
|
48
|
+
"action_links": [],
|
49
|
+
"share_id": "1522004821162174",
|
50
|
+
"target": {
|
51
|
+
"call_to_actions": [],
|
52
|
+
"items": [
|
53
|
+
{
|
54
|
+
"id": "629934437209008",
|
55
|
+
"name": "search engines",
|
56
|
+
"desc": "",
|
57
|
+
"thumb_url": null,
|
58
|
+
"item_url": null,
|
59
|
+
"title": "search engines",
|
60
|
+
"text": "",
|
61
|
+
"source": null,
|
62
|
+
"metalines": {
|
63
|
+
"metaline_1": "click to get redirected",
|
64
|
+
"metaline_2": null,
|
65
|
+
"metaline_3": null
|
66
|
+
},
|
67
|
+
"location": 12314,
|
68
|
+
"category": 69,
|
69
|
+
"call_to_actions": [
|
70
|
+
{
|
71
|
+
"action_link": "http://l.facebook.com/l.php?u=http%3A%2F%2Fgoogle.com%2F&h=ATNziCq_-6I3ZPYwwLluFdCrWMEwLLKvokFlXdEdS4LD2Lzsv2cR2SJYffJcDYBfB092Xeq8oRdftJk4husEYVduH24RnlP3HvVQOkOrciXDs2M7TkWYyNLBelvJ2Fc-mw8pbGy5NslGf_fkZ_A",
|
72
|
+
"action_type": 2,
|
73
|
+
"id": "FFD=",
|
74
|
+
"title": "Google",
|
75
|
+
"link_target_ids": [629934437209008],
|
76
|
+
"is_mutable_by_server": false,
|
77
|
+
"should_show_user_confirmation": false,
|
78
|
+
"confirmation_title": null,
|
79
|
+
"confirmation_message": null,
|
80
|
+
"confirmation_continue_label": null,
|
81
|
+
"confirmation_cancel_label": null,
|
82
|
+
"payment_metadata": {
|
83
|
+
"total_price": null,
|
84
|
+
"payment_module_config": null
|
85
|
+
},
|
86
|
+
"is_disabled": false
|
87
|
+
}, {
|
88
|
+
"action_link": "http://l.facebook.com/l.php?u=http%3A%2F%2Fyahoo.com%2F&h=ATNIuTf7iDGP5xXTWOAdhaGhRFfDf4eS09t_G9CrR0MDiBKpqtCDzPf_9y5Bq7TXMgmo6RttztsgeO0ReSc0PDvJDTa1fLMMK2CjrpkqC91_m-yaMXfeQ4aI6MbhZrOPnK3YFnQP4XvRx3N1udE",
|
89
|
+
"action_type": 2,
|
90
|
+
"id": "CDE=",
|
91
|
+
"title": "Yahoo",
|
92
|
+
"link_target_ids": [629934437209008],
|
93
|
+
"is_mutable_by_server": false,
|
94
|
+
"should_show_user_confirmation": false,
|
95
|
+
"confirmation_title": null,
|
96
|
+
"confirmation_message": null,
|
97
|
+
"confirmation_continue_label": null,
|
98
|
+
"confirmation_cancel_label": null,
|
99
|
+
"payment_metadata": {
|
100
|
+
"total_price": null,
|
101
|
+
"payment_module_config": null
|
102
|
+
},
|
103
|
+
"is_disabled": false
|
104
|
+
}, {
|
105
|
+
"action_link": "http://l.facebook.com/l.php?u=http%3A%2F%2Fbing.com%2F&h=ATMoMijAt6Da6WWIQ679DhZyZizWdxAViWwyl-RjKobFUG_x8GmB8LD6pPa3KP5K1-QTL9vuaFwjqB0itaMFWk4VwQ9uh56JgnbFnAo4qM_CrQufgLeHwwCnWSCnZt8IzYT4y6YULLLFA5bL1H4",
|
106
|
+
"action_type": 2,
|
107
|
+
"id": "ABC=",
|
108
|
+
"title": "Bing",
|
109
|
+
"link_target_ids": [629934437209008],
|
110
|
+
"is_mutable_by_server": false,
|
111
|
+
"should_show_user_confirmation": false,
|
112
|
+
"confirmation_title": null,
|
113
|
+
"confirmation_message": null,
|
114
|
+
"confirmation_continue_label": null,
|
115
|
+
"confirmation_cancel_label": null,
|
116
|
+
"payment_metadata": {
|
117
|
+
"total_price": null,
|
118
|
+
"payment_module_config": null
|
119
|
+
},
|
120
|
+
"is_disabled": false
|
121
|
+
}
|
122
|
+
]
|
123
|
+
}
|
124
|
+
],
|
125
|
+
"location": 132145,
|
126
|
+
"category": 69,
|
127
|
+
"message": "Aaa: search engines"
|
128
|
+
}
|
129
|
+
}
|
130
|
+
},
|
131
|
+
"otherUserFbIds": ["1521994257829897"],
|
132
|
+
"titanType": 1
|
133
|
+
}
|
134
|
+
],
|
135
|
+
"messageMetadata": {
|
136
|
+
"actorFbId": "1345",
|
137
|
+
"messageId": "mid.12345:asdv",
|
138
|
+
"offlineThreadingId": "1345v1345",
|
139
|
+
"tags": ["source:messenger:commerce"],
|
140
|
+
"threadKey": {
|
141
|
+
"otherUserFbId": "13451345"
|
142
|
+
},
|
143
|
+
"timestamp": "1487078180265"
|
144
|
+
}
|
145
|
+
}
|
146
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
.txt
|
@@ -0,0 +1 @@
|
|
1
|
+
.txt
|
@@ -0,0 +1 @@
|
|
1
|
+
.txt
|
@@ -0,0 +1,18 @@
|
|
1
|
+
// Instructions: Copy this file to test-config.json, fill in your test data
|
2
|
+
// and remove all comments (JSON doesn't support comments).
|
3
|
+
// Run the test with `npm test` after installing the devDependencies (mocha).
|
4
|
+
{
|
5
|
+
// Test user login information
|
6
|
+
"user" : {
|
7
|
+
"id" : "00000000000000",
|
8
|
+
"email" : "example@test.com",
|
9
|
+
"password" : "qwerty"
|
10
|
+
},
|
11
|
+
// Array of at least 2 other user IDs (not the same as the test user)
|
12
|
+
"userIDs" : [
|
13
|
+
"11111111111111",
|
14
|
+
"22222222222222"
|
15
|
+
],
|
16
|
+
// Id of page to which test user is an admin
|
17
|
+
"pageID": "3333333333333"
|
18
|
+
}
|