rapido-fca 0.0.1 → 0.0.2

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.
Files changed (81) hide show
  1. package/index.js +415 -419
  2. package/package.json +1 -1
  3. package/readme.md +39 -237
  4. package/src/addExternalModule.js +23 -19
  5. package/src/addUserToGroup.js +97 -99
  6. package/src/changeAdminStatus.js +62 -86
  7. package/src/changeArchivedStatus.js +49 -49
  8. package/src/changeAvatar.js +108 -118
  9. package/src/changeBio.js +64 -63
  10. package/src/changeBlockedStatus.js +38 -40
  11. package/src/changeGroupImage.js +126 -129
  12. package/src/changeNickname.js +49 -49
  13. package/src/changeThreadColor.js +53 -53
  14. package/src/changeThreadEmoji.js +45 -45
  15. package/src/createNewGroup.js +72 -74
  16. package/src/createPoll.js +59 -59
  17. package/src/deleteMessage.js +50 -50
  18. package/src/deleteThread.js +50 -50
  19. package/src/editMessage.js +49 -51
  20. package/src/forwardAttachment.js +54 -54
  21. package/src/getCurrentUserID.js +3 -3
  22. package/src/getEmojiUrl.js +17 -17
  23. package/src/getFriendsList.js +67 -67
  24. package/src/getMessage.js +767 -806
  25. package/src/getThreadHistory.js +642 -656
  26. package/src/getThreadInfo.js +1 -1
  27. package/src/getThreadList.js +227 -199
  28. package/src/getThreadPictures.js +71 -51
  29. package/src/getUserID.js +58 -53
  30. package/src/getUserInfo.js +60 -52
  31. package/src/handleFriendRequest.js +65 -41
  32. package/src/handleMessageRequest.js +60 -42
  33. package/src/httpGet.js +57 -49
  34. package/src/httpPost.js +57 -48
  35. package/src/httpPostFormData.js +63 -0
  36. package/src/listenMqtt.js +895 -827
  37. package/src/logout.js +61 -61
  38. package/src/markAsDelivered.js +53 -42
  39. package/src/markAsRead.js +69 -59
  40. package/src/markAsReadAll.js +42 -32
  41. package/src/markAsSeen.js +54 -43
  42. package/src/muteThread.js +47 -40
  43. package/src/refreshFb_dtsg.js +69 -77
  44. package/src/removeUserFromGroup.js +67 -67
  45. package/src/resolvePhotoUrl.js +34 -34
  46. package/src/searchForThread.js +43 -43
  47. package/src/sendMessage.js +228 -80
  48. package/src/sendTypingIndicator.js +88 -86
  49. package/src/setMessageReaction.js +109 -110
  50. package/src/setPostReaction.js +87 -90
  51. package/src/setTitle.js +72 -76
  52. package/src/threadColors.js +121 -121
  53. package/src/unfriend.js +43 -43
  54. package/src/unsendMessage.js +38 -34
  55. package/src/uploadAttachment.js +81 -79
  56. package/utils.js +1401 -2732
  57. package/src/changeAvatarV2.js +0 -86
  58. package/src/changeAvt.js +0 -85
  59. package/src/changeBlockedStatusMqtt.js +0 -80
  60. package/src/changeCover.js +0 -72
  61. package/src/changeName.js +0 -79
  62. package/src/changeUsername.js +0 -59
  63. package/src/createCommentPost.js +0 -230
  64. package/src/createPost.js +0 -276
  65. package/src/editMessageOld.js +0 -67
  66. package/src/follow.js +0 -74
  67. package/src/getAccess.js +0 -112
  68. package/src/getAvatarUser.js +0 -78
  69. package/src/getRegion.js +0 -7
  70. package/src/getThreadHistoryDeprecated.js +0 -71
  71. package/src/getThreadInfoDeprecated.js +0 -56
  72. package/src/getThreadListDeprecated.js +0 -46
  73. package/src/getUID.js +0 -119
  74. package/src/searchStickers.js +0 -53
  75. package/src/sendMessageMqtt.js +0 -322
  76. package/src/sendTypingIndicatorV2.js +0 -28
  77. package/src/setMessageReactionMqtt.js +0 -62
  78. package/src/setStoryReaction.js +0 -64
  79. package/src/shareContact.js +0 -110
  80. package/src/shareLink.js +0 -59
  81. package/src/stopListenMqtt.js +0 -23
@@ -1,101 +1,103 @@
1
1
  "use strict";
2
2
 
3
3
  const utils = require("../utils");
4
- // @NethWs3Dev
4
+ const log = require("npmlog");
5
5
 
6
6
  module.exports = function (defaultFuncs, api, ctx) {
7
- function makeTypingIndicator(typ, threadID, callback, isGroup) {
8
- const form = {
9
- typ: +typ,
10
- to: "",
11
- source: "mercury-chat",
12
- thread: threadID,
13
- };
7
+ function makeTypingIndicator(typ, threadID, callback, isGroup) {
8
+ const form = {
9
+ typ: +typ,
10
+ to: "",
11
+ source: "mercury-chat",
12
+ thread: threadID
13
+ };
14
14
 
15
- // Check if thread is a single person chat or a group chat
16
- // More info on this is in api.sendMessage
17
- if (utils.getType(isGroup) == "Boolean") {
18
- if (!isGroup) {
19
- form.to = threadID;
20
- }
21
- defaultFuncs
22
- .post("https://www.facebook.com/ajax/messaging/typ.php", ctx.jar, form)
23
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
24
- .then(function (resData) {
25
- if (resData.error) {
26
- throw resData;
27
- }
15
+ // Check if thread is a single person chat or a group chat
16
+ // More info on this is in api.sendMessage
17
+ if (utils.getType(isGroup) == "Boolean") {
18
+ if (!isGroup) {
19
+ form.to = threadID;
20
+ }
21
+ defaultFuncs
22
+ .post("https://www.facebook.com/ajax/messaging/typ.php", ctx.jar, form)
23
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
24
+ .then(function (resData) {
25
+ if (resData.error) {
26
+ throw resData;
27
+ }
28
28
 
29
- return callback();
30
- })
31
- .catch(function (err) {
32
- console.error("sendTypingIndicator", err);
33
- return callback(err);
34
- });
35
- } else {
36
- api.getUserInfo(threadID, function (err, res) {
37
- if (err) {
38
- return callback(err);
39
- }
29
+ return callback();
30
+ })
31
+ .catch(function (err) {
32
+ log.error("sendTypingIndicator", err);
33
+ if (utils.getType(err) == "Object" && err.error === "Not logged in") {
34
+ ctx.loggedIn = false;
35
+ }
36
+ return callback(err);
37
+ });
38
+ } else {
39
+ api.getUserInfo(threadID, function (err, res) {
40
+ if (err) {
41
+ return callback(err);
42
+ }
40
43
 
41
- // If id is single person chat
42
- if (Object.keys(res).length > 0) {
43
- form.to = threadID;
44
- }
44
+ // If id is single person chat
45
+ if (Object.keys(res).length > 0) {
46
+ form.to = threadID;
47
+ }
45
48
 
46
- defaultFuncs
47
- .post(
48
- "https://www.facebook.com/ajax/messaging/typ.php",
49
- ctx.jar,
50
- form,
51
- )
52
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
53
- .then(function (resData) {
54
- if (resData.error) {
55
- throw resData;
56
- }
49
+ defaultFuncs
50
+ .post("https://www.facebook.com/ajax/messaging/typ.php", ctx.jar, form)
51
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
52
+ .then(function (resData) {
53
+ if (resData.error) {
54
+ throw resData;
55
+ }
57
56
 
58
- return callback();
59
- })
60
- .catch(function (err) {
61
- console.error("sendTypingIndicator", err);
62
- return callback(err);
63
- });
64
- });
65
- }
66
- }
57
+ return callback();
58
+ })
59
+ .catch(function (err) {
60
+ log.error("sendTypingIndicator", err);
61
+ if (utils.getType(err) == "Object" && err.error === "Not logged in.") {
62
+ ctx.loggedIn = false;
63
+ }
64
+ return callback(err);
65
+ });
66
+ });
67
+ }
68
+ }
67
69
 
68
- return function sendTypingIndicator(threadID, callback, isGroup) {
69
- if (
70
- utils.getType(callback) !== "Function" &&
71
- utils.getType(callback) !== "AsyncFunction"
72
- ) {
73
- if (callback) {
74
- console.warn(
75
- "sendTypingIndicator",
76
- "callback is not a function - ignoring.",
77
- );
78
- }
79
- callback = () => {};
80
- }
70
+ return function sendTypingIndicator(threadID, callback, isGroup) {
71
+ if (
72
+ utils.getType(callback) !== "Function" &&
73
+ utils.getType(callback) !== "AsyncFunction"
74
+ ) {
75
+ if (callback) {
76
+ log.warn(
77
+ "sendTypingIndicator",
78
+ "callback is not a function - ignoring."
79
+ );
80
+ }
81
+ callback = () => { };
82
+ }
81
83
 
82
- makeTypingIndicator(true, threadID, callback, isGroup);
84
+ makeTypingIndicator(true, threadID, callback, isGroup);
83
85
 
84
- return function end(cb) {
85
- if (
86
- utils.getType(cb) !== "Function" &&
87
- utils.getType(cb) !== "AsyncFunction"
88
- ) {
89
- if (cb) {
90
- console.warn(
91
- "sendTypingIndicator",
92
- "callback is not a function - ignoring.",
93
- );
94
- }
95
- cb = () => {};
96
- }
86
+ return function end(cb) {
87
+ if (
88
+ utils.getType(cb) !== "Function" &&
89
+ utils.getType(cb) !== "AsyncFunction"
90
+ ) {
91
+ if (cb) {
92
+ log.warn(
93
+ "sendTypingIndicator",
94
+ "callback is not a function - ignoring."
95
+ );
96
+ }
97
+ cb = () => { };
98
+ }
97
99
 
98
- makeTypingIndicator(false, threadID, cb, isGroup);
99
- };
100
- };
100
+ makeTypingIndicator(false, threadID, cb, isGroup);
101
+ };
102
+ };
101
103
  };
@@ -1,122 +1,121 @@
1
1
  "use strict";
2
2
 
3
3
  const utils = require("../utils");
4
- // @NethWs3Dev
4
+ const log = require("npmlog");
5
5
 
6
6
  module.exports = function (defaultFuncs, api, ctx) {
7
- return function setMessageReaction(
8
- reaction,
9
- messageID,
10
- callback,
11
- forceCustomReaction,
12
- ) {
13
- let resolveFunc = function () {};
14
- let rejectFunc = function () {};
15
- const returnPromise = new Promise(function (resolve, reject) {
16
- resolveFunc = resolve;
17
- rejectFunc = reject;
18
- });
7
+ return function setMessageReaction(reaction, messageID, callback, forceCustomReaction) {
8
+ let resolveFunc = function () { };
9
+ let rejectFunc = function () { };
10
+ const returnPromise = new Promise(function (resolve, reject) {
11
+ resolveFunc = resolve;
12
+ rejectFunc = reject;
13
+ });
19
14
 
20
- if (!callback) {
21
- callback = function (err, friendList) {
22
- if (err) {
23
- return rejectFunc(err);
24
- }
25
- resolveFunc(friendList);
26
- };
27
- }
15
+ if (!callback) {
16
+ callback = function (err, friendList) {
17
+ if (err) {
18
+ return rejectFunc(err);
19
+ }
20
+ resolveFunc(friendList);
21
+ };
22
+ }
28
23
 
29
- switch (reaction) {
30
- case "\uD83D\uDE0D": //:heart_eyes:
31
- case "\uD83D\uDE06": //:laughing:
32
- case "\uD83D\uDE2E": //:open_mouth:
33
- case "\uD83D\uDE22": //:cry:
34
- case "\uD83D\uDE20": //:angry:
35
- case "\uD83D\uDC4D": //:thumbsup:
36
- case "\uD83D\uDC4E": //:thumbsdown:
37
- case "\u2764": //:heart:
38
- case "\uD83D\uDC97": //:glowingheart:
39
- case "":
40
- //valid
41
- break;
42
- case ":heart_eyes:":
43
- case ":love:":
44
- reaction = "\uD83D\uDE0D";
45
- break;
46
- case ":laughing:":
47
- case ":haha:":
48
- reaction = "\uD83D\uDE06";
49
- break;
50
- case ":open_mouth:":
51
- case ":wow:":
52
- reaction = "\uD83D\uDE2E";
53
- break;
54
- case ":cry:":
55
- case ":sad:":
56
- reaction = "\uD83D\uDE22";
57
- break;
58
- case ":angry:":
59
- reaction = "\uD83D\uDE20";
60
- break;
61
- case ":thumbsup:":
62
- case ":like:":
63
- reaction = "\uD83D\uDC4D";
64
- break;
65
- case ":thumbsdown:":
66
- case ":dislike:":
67
- reaction = "\uD83D\uDC4E";
68
- break;
69
- case ":heart:":
70
- reaction = "\u2764";
71
- break;
72
- case ":glowingheart:":
73
- reaction = "\uD83D\uDC97";
74
- break;
75
- default:
76
- if (forceCustomReaction) {
77
- break;
78
- }
79
- return callback({ error: "Reaction is not a valid emoji." });
80
- }
24
+ if (ctx.i_userID) {
25
+ throw { error: "Cannot set reaction as another profile." };
26
+ }
81
27
 
82
- const variables = {
83
- data: {
84
- client_mutation_id: ctx.clientMutationId++,
85
- actor_id: ctx.userID,
86
- action: reaction == "" ? "REMOVE_REACTION" : "ADD_REACTION",
87
- message_id: messageID,
88
- reaction: reaction,
89
- },
90
- };
28
+ switch (reaction) {
29
+ case "\uD83D\uDE0D": //:heart_eyes:
30
+ case "\uD83D\uDE06": //:laughing:
31
+ case "\uD83D\uDE2E": //:open_mouth:
32
+ case "\uD83D\uDE22": //:cry:
33
+ case "\uD83D\uDE20": //:angry:
34
+ case "\uD83D\uDC4D": //:thumbsup:
35
+ case "\uD83D\uDC4E": //:thumbsdown:
36
+ case "\u2764": //:heart:
37
+ case "\uD83D\uDC97": //:glowingheart:
38
+ case "":
39
+ //valid
40
+ break;
41
+ case ":heart_eyes:":
42
+ case ":love:":
43
+ reaction = "\uD83D\uDE0D";
44
+ break;
45
+ case ":laughing:":
46
+ case ":haha:":
47
+ reaction = "\uD83D\uDE06";
48
+ break;
49
+ case ":open_mouth:":
50
+ case ":wow:":
51
+ reaction = "\uD83D\uDE2E";
52
+ break;
53
+ case ":cry:":
54
+ case ":sad:":
55
+ reaction = "\uD83D\uDE22";
56
+ break;
57
+ case ":angry:":
58
+ reaction = "\uD83D\uDE20";
59
+ break;
60
+ case ":thumbsup:":
61
+ case ":like:":
62
+ reaction = "\uD83D\uDC4D";
63
+ break;
64
+ case ":thumbsdown:":
65
+ case ":dislike:":
66
+ reaction = "\uD83D\uDC4E";
67
+ break;
68
+ case ":heart:":
69
+ reaction = "\u2764";
70
+ break;
71
+ case ":glowingheart:":
72
+ reaction = "\uD83D\uDC97";
73
+ break;
74
+ default:
75
+ if (forceCustomReaction) {
76
+ break;
77
+ }
78
+ return callback({ error: "Reaction is not a valid emoji." });
79
+ }
91
80
 
92
- const qs = {
93
- doc_id: "1491398900900362",
94
- variables: JSON.stringify(variables),
95
- dpr: 1,
96
- };
81
+ const variables = {
82
+ data: {
83
+ client_mutation_id: ctx.clientMutationId++,
84
+ actor_id: ctx.i_userID || ctx.userID,
85
+ action: reaction == "" ? "REMOVE_REACTION" : "ADD_REACTION",
86
+ message_id: messageID,
87
+ reaction: reaction
88
+ }
89
+ };
97
90
 
98
- defaultFuncs
99
- .postFormData(
100
- "https://www.facebook.com/webgraphql/mutation/",
101
- ctx.jar,
102
- {},
103
- qs,
104
- )
105
- .then(utils.parseAndCheckLogin(ctx.jar, defaultFuncs))
106
- .then(function (resData) {
107
- if (!resData) {
108
- throw { error: "setReaction returned empty object." };
109
- }
110
- if (resData.error) {
111
- throw resData;
112
- }
113
- callback(null);
114
- })
115
- .catch(function (err) {
116
- console.error("setReaction", err);
117
- return callback(err);
118
- });
91
+ const qs = {
92
+ doc_id: "1491398900900362",
93
+ variables: JSON.stringify(variables),
94
+ dpr: 1
95
+ };
119
96
 
120
- return returnPromise;
121
- };
97
+ defaultFuncs
98
+ .postFormData(
99
+ "https://www.facebook.com/webgraphql/mutation/",
100
+ ctx.jar,
101
+ {},
102
+ qs
103
+ )
104
+ .then(utils.parseAndCheckLogin(ctx.jar, defaultFuncs))
105
+ .then(function (resData) {
106
+ if (!resData) {
107
+ throw { error: "setReaction returned empty object." };
108
+ }
109
+ if (resData.error || resData.errors) {
110
+ throw resData;
111
+ }
112
+ callback(null);
113
+ })
114
+ .catch(function (err) {
115
+ log.error("setReaction", err);
116
+ return callback(err);
117
+ });
118
+
119
+ return returnPromise;
120
+ };
122
121
  };
@@ -7,106 +7,103 @@
7
7
  "use strict";
8
8
 
9
9
  const utils = require("../utils");
10
- // @NethWs3Dev
10
+ const log = require("npmlog");
11
11
 
12
12
  function formatData(resData) {
13
- return {
14
- viewer_feedback_reaction_info:
15
- resData.feedback_react.feedback.viewer_feedback_reaction_info,
16
- supported_reactions: resData.feedback_react.feedback.supported_reactions,
17
- top_reactions: resData.feedback_react.feedback.top_reactions.edges,
18
- reaction_count: resData.feedback_react.feedback.reaction_count,
19
- };
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
+ };
20
19
  }
21
20
 
22
21
  module.exports = function (defaultFuncs, api, ctx) {
23
- return function setPostReaction(postID, type, callback) {
24
- let resolveFunc = function () {};
25
- let rejectFunc = function () {};
26
- const returnPromise = new Promise(function (resolve, reject) {
27
- resolveFunc = resolve;
28
- rejectFunc = reject;
29
- });
22
+ return function setPostReaction(postID, type, callback) {
23
+ let resolveFunc = function () { };
24
+ let rejectFunc = function () { };
25
+ const returnPromise = new Promise(function (resolve, reject) {
26
+ resolveFunc = resolve;
27
+ rejectFunc = reject;
28
+ });
30
29
 
31
- if (!callback) {
32
- if (
33
- utils.getType(type) === "Function" ||
34
- utils.getType(type) === "AsyncFunction"
35
- ) {
36
- callback = type;
37
- type = 0;
38
- } else {
39
- callback = function (err, data) {
40
- if (err) {
41
- return rejectFunc(err);
42
- }
43
- resolveFunc(data);
44
- };
45
- }
46
- }
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
+ }
47
44
 
48
- const map = {
49
- unlike: 0,
50
- like: 1,
51
- heart: 2,
52
- love: 16,
53
- haha: 4,
54
- wow: 3,
55
- sad: 7,
56
- angry: 8,
57
- };
45
+ const 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
+ };
58
55
 
59
- if (utils.getType(type) !== "Number" && utils.getType(type) === "String") {
60
- type = map[type.toLowerCase()];
61
- }
56
+ if (utils.getType(type) !== "Number" && utils.getType(type) === "String") {
57
+ type = map[type.toLowerCase()];
58
+ }
62
59
 
63
- if (utils.getType(type) !== "Number" && utils.getType(type) !== "String") {
64
- throw {
65
- error: "setPostReaction: Invalid reaction type",
66
- };
67
- }
60
+ if (utils.getType(type) !== "Number" && utils.getType(type) !== "String") {
61
+ throw {
62
+ error: "setPostReaction: Invalid reaction type"
63
+ };
64
+ }
68
65
 
69
- if (type != 0 && !type) {
70
- throw {
71
- error: "setPostReaction: Invalid reaction type",
72
- };
73
- }
66
+ if (type != 0 && !type) {
67
+ throw {
68
+ error: "setPostReaction: Invalid reaction type"
69
+ };
70
+ }
74
71
 
75
- const form = {
76
- av: ctx.userID,
77
- fb_api_caller_class: "RelayModern",
78
- fb_api_req_friendly_name: "CometUFIFeedbackReactMutation",
79
- doc_id: "4769042373179384",
80
- variables: JSON.stringify({
81
- input: {
82
- actor_id: ctx.userID,
83
- feedback_id: new Buffer("feedback:" + postID).toString("base64"),
84
- feedback_reaction: type,
85
- feedback_source: "OBJECT",
86
- is_tracking_encrypted: true,
87
- tracking: [],
88
- session_id: "f7dd50dd-db6e-4598-8cd9-561d5002b423",
89
- client_mutation_id: Math.round(Math.random() * 19).toString(),
90
- },
91
- useDefaultActor: false,
92
- scale: 3,
93
- }),
94
- };
72
+ const form = {
73
+ av: ctx.i_userID || ctx.userID,
74
+ fb_api_caller_class: "RelayModern",
75
+ fb_api_req_friendly_name: "CometUFIFeedbackReactMutation",
76
+ doc_id: "4769042373179384",
77
+ variables: JSON.stringify({
78
+ input: {
79
+ actor_id: ctx.i_userID || ctx.userID,
80
+ feedback_id: (new Buffer("feedback:" + postID)).toString("base64"),
81
+ feedback_reaction: type,
82
+ feedback_source: "OBJECT",
83
+ is_tracking_encrypted: true,
84
+ tracking: [],
85
+ session_id: "f7dd50dd-db6e-4598-8cd9-561d5002b423",
86
+ client_mutation_id: Math.round(Math.random() * 19).toString()
87
+ },
88
+ useDefaultActor: false,
89
+ scale: 3
90
+ })
91
+ };
95
92
 
96
- defaultFuncs
97
- .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
98
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
99
- .then(function (resData) {
100
- if (resData.errors) {
101
- throw resData;
102
- }
103
- return callback(null, formatData(resData.data));
104
- })
105
- .catch(function (err) {
106
- console.error("setPostReaction", err);
107
- return callback(err);
108
- });
93
+ defaultFuncs
94
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
95
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
96
+ .then(function (resData) {
97
+ if (resData.errors) {
98
+ throw resData;
99
+ }
100
+ return callback(null, formatData(resData.data));
101
+ })
102
+ .catch(function (err) {
103
+ log.error("setPostReaction", err);
104
+ return callback(err);
105
+ });
109
106
 
110
- return returnPromise;
111
- };
112
- };
107
+ return returnPromise;
108
+ };
109
+ };