rapido-fca 0.0.6 → 0.0.10

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 (55) hide show
  1. package/index.js +24 -17
  2. package/package.json +1 -1
  3. package/src/addExternalModule.js +23 -19
  4. package/src/addUserToGroup.js +97 -99
  5. package/src/changeAdminStatus.js +62 -86
  6. package/src/changeArchivedStatus.js +49 -49
  7. package/src/changeAvatar.js +108 -118
  8. package/src/changeBio.js +64 -63
  9. package/src/changeBlockedStatus.js +38 -40
  10. package/src/changeGroupImage.js +126 -129
  11. package/src/changeNickname.js +49 -49
  12. package/src/changeThreadColor.js +53 -53
  13. package/src/changeThreadEmoji.js +45 -45
  14. package/src/createNewGroup.js +72 -74
  15. package/src/createPoll.js +59 -59
  16. package/src/deleteMessage.js +50 -50
  17. package/src/deleteThread.js +50 -50
  18. package/src/editMessage.js +49 -51
  19. package/src/forwardAttachment.js +54 -54
  20. package/src/getCurrentUserID.js +3 -3
  21. package/src/getEmojiUrl.js +17 -17
  22. package/src/getFriendsList.js +67 -67
  23. package/src/getMessage.js +767 -806
  24. package/src/getThreadHistory.js +642 -656
  25. package/src/getThreadInfo.js +1 -1
  26. package/src/getThreadList.js +227 -199
  27. package/src/getThreadPictures.js +71 -51
  28. package/src/getUserID.js +58 -53
  29. package/src/getUserInfo.js +60 -52
  30. package/src/handleFriendRequest.js +65 -41
  31. package/src/handleMessageRequest.js +60 -42
  32. package/src/httpGet.js +57 -49
  33. package/src/httpPost.js +57 -48
  34. package/src/httpPostFormData.js +63 -0
  35. package/src/listenMqtt.js +827 -827
  36. package/src/logout.js +61 -61
  37. package/src/markAsDelivered.js +53 -42
  38. package/src/markAsRead.js +69 -59
  39. package/src/markAsReadAll.js +42 -32
  40. package/src/markAsSeen.js +54 -43
  41. package/src/muteThread.js +47 -40
  42. package/src/refreshFb_dtsg.js +69 -77
  43. package/src/removeUserFromGroup.js +67 -67
  44. package/src/resolvePhotoUrl.js +34 -34
  45. package/src/searchForThread.js +43 -43
  46. package/src/sendMessage.js +228 -80
  47. package/src/sendTypingIndicator.js +88 -86
  48. package/src/setEmojiReaction.js +59 -0
  49. package/src/setPostReaction.js +87 -90
  50. package/src/setTitle.js +72 -76
  51. package/src/threadColors.js +121 -121
  52. package/src/unfriend.js +43 -43
  53. package/src/unsendMessage.js +38 -34
  54. package/src/uploadAttachment.js +81 -79
  55. package/src/videoAttachment.js +76 -0
@@ -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
  };
@@ -0,0 +1,59 @@
1
+
2
+ "use strict";
3
+
4
+ const utils = require("../utils");
5
+ const log = require("npmlog");
6
+
7
+ module.exports = function(defaultFuncs, api, ctx) {
8
+ return function setEmojiReaction(reaction, messageID, callback) {
9
+ let resolveFunc = function(){};
10
+ let rejectFunc = function(){};
11
+ const returnPromise = new Promise(function(resolve, reject) {
12
+ resolveFunc = resolve;
13
+ rejectFunc = reject;
14
+ });
15
+
16
+ if (!callback) {
17
+ callback = function(err) {
18
+ if (err) {
19
+ return rejectFunc(err);
20
+ }
21
+ resolveFunc();
22
+ };
23
+ }
24
+
25
+ if (!reaction) reaction = '';
26
+
27
+ const form = {
28
+ data: {
29
+ client_mutation_id: ctx.clientMutationId++,
30
+ actor_id: ctx.userID,
31
+ action: reaction == "" ? "REMOVE_REACTION" : "ADD_REACTION",
32
+ message_id: messageID,
33
+ reaction: reaction
34
+ }
35
+ };
36
+
37
+ defaultFuncs
38
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, {
39
+ doc_id: "1491398900900362",
40
+ variables: JSON.stringify(form)
41
+ })
42
+ .then(utils.parseAndCheckLogin(ctx.jar, defaultFuncs))
43
+ .then(function(resData) {
44
+ if (!resData) {
45
+ throw {error: "setEmojiReaction returned empty object."};
46
+ }
47
+ if (resData.error) {
48
+ throw resData;
49
+ }
50
+ callback();
51
+ })
52
+ .catch(function(err) {
53
+ log.error("setEmojiReaction", err);
54
+ return callback(err);
55
+ });
56
+
57
+ return returnPromise;
58
+ };
59
+ };
@@ -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
+ };
package/src/setTitle.js CHANGED
@@ -1,90 +1,86 @@
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 setTitle(newTitle, threadID, callback) {
8
- if (
9
- !callback &&
10
- (utils.getType(threadID) === "Function" ||
11
- utils.getType(threadID) === "AsyncFunction")
12
- ) {
13
- throw { error: "please pass a threadID as a second argument." };
14
- }
7
+ return function setTitle(newTitle, threadID, callback) {
8
+ if (
9
+ !callback &&
10
+ (utils.getType(threadID) === "Function" ||
11
+ utils.getType(threadID) === "AsyncFunction")
12
+ ) {
13
+ throw { error: "please pass a threadID as a second argument." };
14
+ }
15
15
 
16
- let resolveFunc = function () {};
17
- let rejectFunc = function () {};
18
- const returnPromise = new Promise(function (resolve, reject) {
19
- resolveFunc = resolve;
20
- rejectFunc = reject;
21
- });
16
+ let resolveFunc = function () { };
17
+ let rejectFunc = function () { };
18
+ const returnPromise = new Promise(function (resolve, reject) {
19
+ resolveFunc = resolve;
20
+ rejectFunc = reject;
21
+ });
22
22
 
23
- if (!callback) {
24
- callback = function (err, friendList) {
25
- if (err) {
26
- return rejectFunc(err);
27
- }
28
- resolveFunc(friendList);
29
- };
30
- }
23
+ if (!callback) {
24
+ callback = function (err, friendList) {
25
+ if (err) {
26
+ return rejectFunc(err);
27
+ }
28
+ resolveFunc(friendList);
29
+ };
30
+ }
31
31
 
32
- const messageAndOTID = utils.generateOfflineThreadingID();
33
- const form = {
34
- client: "mercury",
35
- action_type: "ma-type:log-message",
36
- author: "fbid:" + (ctx.userID),
37
- author_email: "",
38
- coordinates: "",
39
- timestamp: Date.now(),
40
- timestamp_absolute: "Today",
41
- timestamp_relative: utils.generateTimestampRelative(),
42
- timestamp_time_passed: "0",
43
- is_unread: false,
44
- is_cleared: false,
45
- is_forward: false,
46
- is_filtered_content: false,
47
- is_spoof_warning: false,
48
- source: "source:chat:web",
49
- "source_tags[0]": "source:chat",
50
- status: "0",
51
- offline_threading_id: messageAndOTID,
52
- message_id: messageAndOTID,
53
- threading_id: utils.generateThreadingID(ctx.clientID),
54
- manual_retry_cnt: "0",
55
- thread_fbid: threadID,
56
- thread_name: newTitle,
57
- thread_id: threadID,
58
- log_message_type: "log:thread-name",
59
- };
32
+ const messageAndOTID = utils.generateOfflineThreadingID();
33
+ const form = {
34
+ client: "mercury",
35
+ action_type: "ma-type:log-message",
36
+ author: "fbid:" + (ctx.i_userID || ctx.userID),
37
+ author_email: "",
38
+ coordinates: "",
39
+ timestamp: Date.now(),
40
+ timestamp_absolute: "Today",
41
+ timestamp_relative: utils.generateTimestampRelative(),
42
+ timestamp_time_passed: "0",
43
+ is_unread: false,
44
+ is_cleared: false,
45
+ is_forward: false,
46
+ is_filtered_content: false,
47
+ is_spoof_warning: false,
48
+ source: "source:chat:web",
49
+ "source_tags[0]": "source:chat",
50
+ status: "0",
51
+ offline_threading_id: messageAndOTID,
52
+ message_id: messageAndOTID,
53
+ threading_id: utils.generateThreadingID(ctx.clientID),
54
+ manual_retry_cnt: "0",
55
+ thread_fbid: threadID,
56
+ thread_name: newTitle,
57
+ thread_id: threadID,
58
+ log_message_type: "log:thread-name"
59
+ };
60
60
 
61
- defaultFuncs
62
- .post(
63
- "https://www.facebook.com/messaging/set_thread_name/",
64
- ctx.jar,
65
- form,
66
- )
67
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
68
- .then(function (resData) {
69
- if (resData.error && resData.error === 1545012) {
70
- throw { error: "Cannot change chat title: Not member of chat." };
71
- }
61
+ defaultFuncs
62
+ .post("https://www.facebook.com/messaging/set_thread_name/", ctx.jar, form)
63
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
64
+ .then(function (resData) {
65
+ if (resData.error && resData.error === 1545012) {
66
+ throw { error: "Cannot change chat title: Not member of chat." };
67
+ }
72
68
 
73
- if (resData.error && resData.error === 1545003) {
74
- throw { error: "Cannot set title of single-user chat." };
75
- }
69
+ if (resData.error && resData.error === 1545003) {
70
+ throw { error: "Cannot set title of single-user chat." };
71
+ }
76
72
 
77
- if (resData.error) {
78
- throw resData;
79
- }
73
+ if (resData.error) {
74
+ throw resData;
75
+ }
80
76
 
81
- return callback();
82
- })
83
- .catch(function (err) {
84
- console.error("setTitle", err);
85
- return callback(err);
86
- });
77
+ return callback();
78
+ })
79
+ .catch(function (err) {
80
+ log.error("setTitle", err);
81
+ return callback(err);
82
+ });
87
83
 
88
- return returnPromise;
89
- };
84
+ return returnPromise;
85
+ };
90
86
  };