alicezetion 1.8.4 → 1.8.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. package/.cache/replit/__replit_disk_meta.json +1 -1
  2. package/.cache/replit/modules.stamp +1 -0
  3. package/.cache/replit/nix/env.json +1 -1
  4. package/index.js +375 -210
  5. package/leiamnash/addExternalModule.js +15 -0
  6. package/leiamnash/addUserToGroup.js +77 -0
  7. package/leiamnash/changeAdminStatus.js +47 -0
  8. package/leiamnash/changeArchivedStatus.js +41 -0
  9. package/leiamnash/changeAvatar.js +127 -0
  10. package/leiamnash/changeBio.js +64 -0
  11. package/leiamnash/changeBlockedStatus.js +36 -0
  12. package/leiamnash/changeGroupImage.js +105 -0
  13. package/leiamnash/changeNickname.js +43 -0
  14. package/leiamnash/changeThreadColor.js +61 -0
  15. package/leiamnash/changeThreadEmoji.js +41 -0
  16. package/{src → leiamnash}/chat.js +3 -28
  17. package/leiamnash/createNewGroup.js +70 -0
  18. package/leiamnash/createPoll.js +59 -0
  19. package/leiamnash/deleteMessage.js +44 -0
  20. package/leiamnash/deleteThread.js +42 -0
  21. package/leiamnash/forwardAttachment.js +47 -0
  22. package/leiamnash/forwardMessage.js +0 -0
  23. package/leiamnash/getCurrentUserID.js +7 -0
  24. package/leiamnash/getEmojiUrl.js +27 -0
  25. package/leiamnash/getFriendsList.js +73 -0
  26. package/leiamnash/getInfoVideo.js +134 -0
  27. package/leiamnash/getThreadHistory.js +537 -0
  28. package/leiamnash/getThreadHistoryDeprecated.js +71 -0
  29. package/{src → leiamnash}/getThreadInfo.js +54 -70
  30. package/leiamnash/getThreadInfoDeprecated.js +56 -0
  31. package/leiamnash/getThreadList.js +213 -0
  32. package/leiamnash/getThreadListDeprecated.js +46 -0
  33. package/leiamnash/getThreadPictures.js +59 -0
  34. package/leiamnash/getUserID.js +61 -0
  35. package/leiamnash/getUserInfo.js +66 -0
  36. package/leiamnash/handleFriendRequest.js +46 -0
  37. package/leiamnash/handleMessageRequest.js +47 -0
  38. package/leiamnash/httpGet.js +47 -0
  39. package/leiamnash/httpPost.js +47 -0
  40. package/leiamnash/httpPostFormData.js +42 -0
  41. package/{src → leiamnash}/listenMqtt.js +6 -16
  42. package/leiamnash/logout.js +68 -0
  43. package/leiamnash/markAsDelivered.js +47 -0
  44. package/leiamnash/markAsRead.js +70 -0
  45. package/leiamnash/markAsReadAll.js +40 -0
  46. package/leiamnash/markAsSeen.js +48 -0
  47. package/leiamnash/muteThread.js +45 -0
  48. package/leiamnash/react.js +109 -0
  49. package/{src → leiamnash}/refreshFb_dtsg.js +1 -1
  50. package/leiamnash/removeUserFromGroup.js +45 -0
  51. package/leiamnash/resolvePhotoUrl.js +36 -0
  52. package/leiamnash/searchForThread.js +42 -0
  53. package/leiamnash/seen.js +40 -0
  54. package/leiamnash/sendMessage.js +315 -0
  55. package/leiamnash/sendTypingIndicator.js +70 -0
  56. package/leiamnash/setMessageReaction.js +103 -0
  57. package/leiamnash/setPostReaction.js +63 -0
  58. package/leiamnash/setTitle.js +70 -0
  59. package/leiamnash/threadColors.js +41 -0
  60. package/leiamnash/unfriend.js +42 -0
  61. package/leiamnash/unsendMessage.js +39 -0
  62. package/leiamnash/uploadAttachment.js +96 -0
  63. package/package.json +3 -6
  64. package/replit.nix +4 -4
  65. package/utils.js +176 -135
  66. package/src/addExternalModule.js +0 -17
  67. package/src/addUserToGroup.js +0 -113
  68. package/src/changeAdminStatus.js +0 -79
  69. package/src/changeArchivedStatus.js +0 -55
  70. package/src/changeAvatar.js +0 -93
  71. package/src/changeBio.js +0 -77
  72. package/src/changeBlockedStatus.js +0 -47
  73. package/src/changeCover.js +0 -73
  74. package/src/changeGroupImage.js +0 -132
  75. package/src/changeName.js +0 -79
  76. package/src/changeNickname.js +0 -59
  77. package/src/changeThreadColor.js +0 -65
  78. package/src/changeThreadEmoji.js +0 -55
  79. package/src/createNewGroup.js +0 -86
  80. package/src/createPoll.js +0 -71
  81. package/src/data/getThreadInfo.json +0 -1
  82. package/src/deleteMessage.js +0 -56
  83. package/src/deleteThread.js +0 -56
  84. package/src/forwardAttachment.js +0 -60
  85. package/src/getAccess.js +0 -112
  86. package/src/getAvatarUser.js +0 -78
  87. package/src/getCurrentUserID.js +0 -7
  88. package/src/getEmojiUrl.js +0 -29
  89. package/src/getFriendsList.js +0 -83
  90. package/src/getThreadHistory.js +0 -666
  91. package/src/getThreadList.js +0 -237
  92. package/src/getThreadPictures.js +0 -79
  93. package/src/getUserID.js +0 -66
  94. package/src/getUserInfo.js +0 -163
  95. package/src/handleFriendRequest.js +0 -61
  96. package/src/handleMessageRequest.js +0 -65
  97. package/src/httpGet.js +0 -57
  98. package/src/httpPost.js +0 -57
  99. package/src/httpPostFormData.js +0 -63
  100. package/src/listenNotification.js +0 -88
  101. package/src/logout.js +0 -275
  102. package/src/markAsDelivered.js +0 -58
  103. package/src/markAsRead.js +0 -80
  104. package/src/markAsReadAll.js +0 -50
  105. package/src/markAsSeen.js +0 -59
  106. package/src/muteThread.js +0 -52
  107. package/src/react.js +0 -117
  108. package/src/removeUserFromGroup.js +0 -79
  109. package/src/resolvePhotoUrl.js +0 -45
  110. package/src/searchForThread.js +0 -53
  111. package/src/searchStickers.js +0 -52
  112. package/src/seen.js +0 -50
  113. package/src/sendMessage.js +0 -477
  114. package/src/sendMessageMqtt.js +0 -316
  115. package/src/sendTypingIndicator.js +0 -103
  116. package/src/setMessageReaction.js +0 -117
  117. package/src/setPostReaction.js +0 -109
  118. package/src/setTitle.js +0 -86
  119. package/src/threadColors.js +0 -131
  120. package/src/unfriend.js +0 -52
  121. package/src/unsendMessage.js +0 -49
  122. /package/{src → leiamnash}/getMessage.js +0 -0
@@ -1,55 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- return function changeThreadEmoji(emoji, threadID, callback) {
8
- let resolveFunc = function () { };
9
- let rejectFunc = function () { };
10
- const returnPromise = new Promise(function (resolve, reject) {
11
- resolveFunc = resolve;
12
- rejectFunc = reject;
13
- });
14
-
15
- if (!callback) {
16
- callback = function (err) {
17
- if (err) {
18
- return rejectFunc(err);
19
- }
20
- resolveFunc();
21
- };
22
- }
23
- const form = {
24
- emoji_choice: emoji,
25
- thread_or_other_fbid: threadID
26
- };
27
-
28
- defaultFuncs
29
- .post(
30
- "https://www.facebook.com/messaging/save_thread_emoji/?source=thread_settings&__pc=EXP1%3Amessengerdotcom_pkg",
31
- ctx.jar,
32
- form
33
- )
34
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
35
- .then(function (resData) {
36
- if (resData.error === 1357031) {
37
- throw {
38
- error:
39
- "Trying to change emoji of a chat that doesn't exist. Have at least one message in the thread before trying to change the emoji."
40
- };
41
- }
42
- if (resData.error) {
43
- throw resData;
44
- }
45
-
46
- return callback();
47
- })
48
- .catch(function (err) {
49
- log.error("changeThreadEmoji", err);
50
- return callback(err);
51
- });
52
-
53
- return returnPromise;
54
- };
55
- };
@@ -1,86 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- return function createNewGroup(participantIDs, groupTitle, callback) {
8
- if (utils.getType(groupTitle) == "Function") {
9
- callback = groupTitle;
10
- groupTitle = null;
11
- }
12
-
13
- if (utils.getType(participantIDs) !== "Array") {
14
- throw { error: "createNewGroup: participantIDs should be an array." };
15
- }
16
-
17
- if (participantIDs.length < 2) {
18
- throw { error: "createNewGroup: participantIDs should have at least 2 IDs." };
19
- }
20
-
21
- let resolveFunc = function () { };
22
- let rejectFunc = function () { };
23
- const returnPromise = new Promise(function (resolve, reject) {
24
- resolveFunc = resolve;
25
- rejectFunc = reject;
26
- });
27
-
28
- if (!callback) {
29
- callback = function (err, threadID) {
30
- if (err) {
31
- return rejectFunc(err);
32
- }
33
- resolveFunc(threadID);
34
- };
35
- }
36
-
37
- const pids = [];
38
- for (const n in participantIDs) {
39
- pids.push({
40
- fbid: participantIDs[n]
41
- });
42
- }
43
- pids.push({ fbid: ctx.i_userID || ctx.userID });
44
-
45
- const form = {
46
- fb_api_caller_class: "RelayModern",
47
- fb_api_req_friendly_name: "MessengerGroupCreateMutation",
48
- av: ctx.i_userID || ctx.userID,
49
- //This doc_id is valid as of January 11th, 2020
50
- doc_id: "577041672419534",
51
- variables: JSON.stringify({
52
- input: {
53
- entry_point: "jewel_new_group",
54
- actor_id: ctx.i_userID || ctx.userID,
55
- participants: pids,
56
- client_mutation_id: Math.round(Math.random() * 1024).toString(),
57
- thread_settings: {
58
- name: groupTitle,
59
- joinable_mode: "PRIVATE",
60
- thread_image_fbid: null
61
- }
62
- }
63
- })
64
- };
65
-
66
- defaultFuncs
67
- .post(
68
- "https://www.facebook.com/api/graphql/",
69
- ctx.jar,
70
- form
71
- )
72
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
73
- .then(function (resData) {
74
- if (resData.errors) {
75
- throw resData;
76
- }
77
- return callback(null, resData.data.messenger_group_thread_create.thread.thread_key.thread_fbid);
78
- })
79
- .catch(function (err) {
80
- log.error("createNewGroup", err);
81
- return callback(err);
82
- });
83
-
84
- return returnPromise;
85
- };
86
- };
package/src/createPoll.js DELETED
@@ -1,71 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- return function createPoll(title, threadID, options, callback) {
8
- let resolveFunc = function () { };
9
- let rejectFunc = function () { };
10
- const returnPromise = new Promise(function (resolve, reject) {
11
- resolveFunc = resolve;
12
- rejectFunc = reject;
13
- });
14
-
15
- if (!callback) {
16
- if (utils.getType(options) == "Function") {
17
- callback = options;
18
- options = null;
19
- } else {
20
- callback = function (err) {
21
- if (err) {
22
- return rejectFunc(err);
23
- }
24
- resolveFunc();
25
- };
26
- }
27
- }
28
- if (!options) {
29
- options = {}; // Initial poll options are optional
30
- }
31
-
32
- const form = {
33
- target_id: threadID,
34
- question_text: title
35
- };
36
-
37
- // Set fields for options (and whether they are selected initially by the posting user)
38
- let ind = 0;
39
- for (const opt in options) {
40
- // eslint-disable-next-line no-prototype-builtins
41
- if (options.hasOwnProperty(opt)) {
42
- form["option_text_array[" + ind + "]"] = opt;
43
- form["option_is_selected_array[" + ind + "]"] = options[opt]
44
- ? "1"
45
- : "0";
46
- ind++;
47
- }
48
- }
49
-
50
- defaultFuncs
51
- .post(
52
- "https://www.facebook.com/messaging/group_polling/create_poll/?dpr=1",
53
- ctx.jar,
54
- form
55
- )
56
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
57
- .then(function (resData) {
58
- if (resData.payload.status != "success") {
59
- throw resData;
60
- }
61
-
62
- return callback();
63
- })
64
- .catch(function (err) {
65
- log.error("createPoll", err);
66
- return callback(err);
67
- });
68
-
69
- return returnPromise;
70
- };
71
- };
@@ -1 +0,0 @@
1
- []
@@ -1,56 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- return function deleteMessage(messageOrMessages, callback) {
8
- let resolveFunc = function () { };
9
- let rejectFunc = function () { };
10
- const returnPromise = new Promise(function (resolve, reject) {
11
- resolveFunc = resolve;
12
- rejectFunc = reject;
13
- });
14
- if (!callback) {
15
- callback = function (err) {
16
- if (err) {
17
- return rejectFunc(err);
18
- }
19
- resolveFunc();
20
- };
21
- }
22
-
23
- const form = {
24
- client: "mercury"
25
- };
26
-
27
- if (utils.getType(messageOrMessages) !== "Array") {
28
- messageOrMessages = [messageOrMessages];
29
- }
30
-
31
- for (let i = 0; i < messageOrMessages.length; i++) {
32
- form["message_ids[" + i + "]"] = messageOrMessages[i];
33
- }
34
-
35
- defaultFuncs
36
- .post(
37
- "https://www.facebook.com/ajax/mercury/delete_messages.php",
38
- ctx.jar,
39
- form
40
- )
41
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
42
- .then(function (resData) {
43
- if (resData.error) {
44
- throw resData;
45
- }
46
-
47
- return callback();
48
- })
49
- .catch(function (err) {
50
- log.error("deleteMessage", err);
51
- return callback(err);
52
- });
53
-
54
- return returnPromise;
55
- };
56
- };
@@ -1,56 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- return function deleteThread(threadOrThreads, callback) {
8
- let resolveFunc = function () { };
9
- let rejectFunc = function () { };
10
- const returnPromise = new Promise(function (resolve, reject) {
11
- resolveFunc = resolve;
12
- rejectFunc = reject;
13
- });
14
- if (!callback) {
15
- callback = function (err) {
16
- if (err) {
17
- return rejectFunc(err);
18
- }
19
- resolveFunc();
20
- };
21
- }
22
-
23
- const form = {
24
- client: "mercury"
25
- };
26
-
27
- if (utils.getType(threadOrThreads) !== "Array") {
28
- threadOrThreads = [threadOrThreads];
29
- }
30
-
31
- for (let i = 0; i < threadOrThreads.length; i++) {
32
- form["ids[" + i + "]"] = threadOrThreads[i];
33
- }
34
-
35
- defaultFuncs
36
- .post(
37
- "https://www.facebook.com/ajax/mercury/delete_thread.php",
38
- ctx.jar,
39
- form
40
- )
41
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
42
- .then(function (resData) {
43
- if (resData.error) {
44
- throw resData;
45
- }
46
-
47
- return callback();
48
- })
49
- .catch(function (err) {
50
- log.error("deleteThread", err);
51
- return callback(err);
52
- });
53
-
54
- return returnPromise;
55
- };
56
- };
@@ -1,60 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- return function forwardAttachment(attachmentID, userOrUsers, callback) {
8
- let resolveFunc = function () { };
9
- let rejectFunc = function () { };
10
- const returnPromise = new Promise(function (resolve, reject) {
11
- resolveFunc = resolve;
12
- rejectFunc = reject;
13
- });
14
- if (!callback) {
15
- callback = function (err) {
16
- if (err) {
17
- return rejectFunc(err);
18
- }
19
- resolveFunc();
20
- };
21
- }
22
-
23
- const form = {
24
- attachment_id: attachmentID
25
- };
26
-
27
- if (utils.getType(userOrUsers) !== "Array") {
28
- userOrUsers = [userOrUsers];
29
- }
30
-
31
- const timestamp = Math.floor(Date.now() / 1000);
32
-
33
- for (let i = 0; i < userOrUsers.length; i++) {
34
- //That's good, the key of the array is really timestmap in seconds + index
35
- //Probably time when the attachment will be sent?
36
- form["recipient_map[" + (timestamp + i) + "]"] = userOrUsers[i];
37
- }
38
-
39
- defaultFuncs
40
- .post(
41
- "https://www.facebook.com/mercury/attachments/forward/",
42
- ctx.jar,
43
- form
44
- )
45
- .then(utils.parseAndCheckLogin(ctx.jar, defaultFuncs))
46
- .then(function (resData) {
47
- if (resData.error) {
48
- throw resData;
49
- }
50
-
51
- return callback();
52
- })
53
- .catch(function (err) {
54
- log.error("forwardAttachment", err);
55
- return callback(err);
56
- });
57
-
58
- return returnPromise;
59
- };
60
- };
package/src/getAccess.js DELETED
@@ -1,112 +0,0 @@
1
- 'use strict';
2
-
3
- var utils = require('../utils');
4
- var log = require('npmlog');
5
-
6
- module.exports = function (http, api, ctx) {
7
- return function getAccess(authCode = '', callback) {
8
- var cb;
9
- var url = 'https://business.facebook.com/';
10
- var Referer = url + 'security/twofactor/reauth/?twofac_next=' + encodeURIComponent(url + 'content_management') + '&type=avoid_bypass&app_id=0&save_device=0';
11
- var rt = new Promise(function (resolve, reject) {
12
- cb = (error, token) => token ? resolve(token) : reject(error);
13
- });
14
-
15
- if (typeof authCode == 'function') {
16
- callback = authCode;
17
- authCode = '';
18
- }
19
- if (typeof callback == 'function') cb = callback;
20
- if (!!ctx.access_token)
21
- cb(null, ctx.access_token);
22
- else
23
- utils
24
- .get(url + 'content_management', ctx.jar, null, ctx.globalOptions, null, {
25
- noRef: true,
26
- Origin: url
27
- })
28
- .then(function (res) {
29
- var html = res.body;
30
- var lsd = utils.getFrom(html, "[\"LSD\",[],{\"token\":\"", "\"}");
31
- return lsd;
32
- })
33
- .then(function (lsd) {
34
- function submitCode(code) {
35
- var pCb;
36
- var rtPromise = new Promise(function (resolve) {
37
- pCb = (error, token) => resolve(cb(error, token));
38
- });
39
- if (typeof code != 'string')
40
- pCb({
41
- error: 'submitCode',
42
- lerror: 'code must be string',
43
- continue: submitCode
44
- });
45
- else
46
- http
47
- .post(url + 'security/twofactor/reauth/enter/', ctx.jar, {
48
- approvals_code: code,
49
- save_device: true,
50
- lsd
51
- }, ctx.globalOptions, null, {
52
- Referer,
53
- Origin: url
54
- })
55
- .then(function (res) {
56
- var { payload } = JSON.parse(res.body.split(';').pop() || '{}');
57
- if (payload && !payload.codeConfirmed)
58
- throw {
59
- error: 'submitCode',
60
- lerror: payload.message,
61
- continue: submitCode
62
- }
63
-
64
- return;
65
- })
66
- .then(function () {
67
- return utils
68
- .get(url + 'content_management', ctx.jar, null, ctx.globalOptions, null, { noRef: true })
69
- .then(function (res) {
70
- var html = res.body;
71
- var token = /"accessToken":"(\S+)","clientID":/g.exec(html);
72
-
73
- return [html, token];
74
- });
75
- })
76
- .then(function (res) {
77
- if (!res[1])
78
- throw {
79
- error: 'token-undefined',
80
- htmlData: res[0]
81
- }
82
- ctx.access_token = res[1][1];
83
- return pCb(null, res[1][1]);
84
- })
85
- .catch(function (err) {
86
- log.error('getAccess', err.error || err);
87
- return pCb(err);
88
- });
89
-
90
- return rtPromise;
91
- }
92
-
93
- if (authCode.length == 6 && !isNaN(authCode))
94
- submitCode(authCode.toString());
95
- else if (typeof callback == 'function')
96
- throw {
97
- error: 'submitCode',
98
- continue: submitCode
99
- }
100
- else
101
- throw {
102
- error: 'authentication code must be string or number or callback must be a function to continue'
103
- }
104
- })
105
- .catch(function (err) {
106
- log.error('getAccess', typeof callback == 'function' ? (err.error || err) : err);
107
- return cb(err);
108
- });
109
-
110
- return rt;
111
- }
112
- }
@@ -1,78 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require('./../utils.js');
4
- var log = require('npmlog');
5
-
6
- module.exports = function (http, api, ctx) {
7
- function handleAvatar(userIDs, height, width) {
8
- var cb;
9
- var uploads = [];
10
- var rtPromise = new Promise(function (resolve, reject) {
11
- cb = (error, data) => data ? resolve(data) : reject(error);
12
- });
13
-
14
- // Getting User Data From GraphAPI In The Loop
15
- userIDs.map(function (v) {
16
- var mainPromise = http
17
- .get(`https://graph.facebook.com/${v}/picture?height=${height}&width=${width}&redirect=false&access_token=` + ctx.access_token, ctx.jar)
18
- .then(utils.parseAndCheckLogin(ctx, http))
19
- .then(function (res) {
20
- return {
21
- userID: v,
22
- url: res.data.url
23
- }
24
- })
25
- .catch(function (err) {
26
- return cb(err);
27
- });
28
- uploads.push(mainPromise);
29
- });
30
-
31
- // resolve all promises
32
- Promise
33
- .all(uploads)
34
- .then(function (res) {
35
- return cb(null, res.reduce(function (Obj, { userID, url }) {
36
- Obj[userID] = url;
37
- return Obj;
38
- }, {}));
39
- })
40
- .catch(function (err) {
41
- return cb(err);
42
- });
43
-
44
- return rtPromise;
45
- }
46
-
47
- return function getAvatarUser(userIDs, size = [1500, 1500], callback) {
48
- var cb;
49
- var rtPromise = new Promise(function (resolve, reject) {
50
- cb = (err, res) => res ? resolve(res) : reject(err);
51
- });
52
-
53
- (typeof size == 'string' || typeof size == 'number') ? size = [size, size] : Array.isArray(size) && size.length == 1 ? size = [size[0], size[0]] : null;
54
-
55
- if (typeof size == 'function') {
56
- callback = size;
57
- size = [1500, 1500];
58
- }
59
- if (typeof callback == 'function') cb = callback;
60
- if (!Array.isArray(userIDs)) userIDs = [userIDs];
61
- var [height, width] = size;
62
- if (!ctx.access_token) {
63
- log.error('getAvatarUser', 'Cant get access_token');
64
- return cb('Cant get access_token');
65
- };
66
-
67
- handleAvatar(userIDs, height, width)
68
- .then(function (res) {
69
- return cb(null, res);
70
- })
71
- .catch(function (err) {
72
- log.error('getAvatarUser', err);
73
- return cb(err);
74
- });
75
-
76
- return rtPromise;
77
- }
78
- }
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- module.exports = function (defaultFuncs, api, ctx) {
4
- return function getCurrentUserID() {
5
- return ctx.i_userID || ctx.userID;
6
- };
7
- };
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- const util = require("util");
4
-
5
- module.exports = function () {
6
- return function getEmojiUrl(c, size, pixelRatio) {
7
- /*
8
- Resolves Facebook Messenger emoji image asset URL for an emoji character.
9
- Supported sizes are 32, 64, and 128.
10
- Supported pixel ratios are '1.0' and '1.5' (possibly more; haven't tested)
11
- */
12
- const baseUrl = "https://static.xx.fbcdn.net/images/emoji.php/v8/z%s/%s";
13
- pixelRatio = pixelRatio || "1.0";
14
-
15
- const ending = util.format(
16
- "%s/%s/%s.png",
17
- pixelRatio,
18
- size,
19
- c.codePointAt(0).toString(16)
20
- );
21
- let base = 317426846;
22
- for (let i = 0; i < ending.length; i++) {
23
- base = (base << 5) - base + ending.charCodeAt(i);
24
- }
25
-
26
- const hashed = (base & 255).toString(16);
27
- return util.format(baseUrl, hashed, ending);
28
- };
29
- };
@@ -1,83 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- // [almost] copy pasted from one of FB's minified file (GenderConst)
7
- const GENDERS = {
8
- 0: "unknown",
9
- 1: "female_singular",
10
- 2: "male_singular",
11
- 3: "female_singular_guess",
12
- 4: "male_singular_guess",
13
- 5: "mixed",
14
- 6: "neuter_singular",
15
- 7: "unknown_singular",
16
- 8: "female_plural",
17
- 9: "male_plural",
18
- 10: "neuter_plural",
19
- 11: "unknown_plural"
20
- };
21
-
22
- function formatData(obj) {
23
- return Object.keys(obj).map(function (key) {
24
- const user = obj[key];
25
- return {
26
- alternateName: user.alternateName,
27
- firstName: user.firstName,
28
- gender: GENDERS[user.gender],
29
- userID: utils.formatID(user.id.toString()),
30
- isFriend: user.is_friend != null && user.is_friend ? true : false,
31
- fullName: user.name,
32
- profilePicture: user.thumbSrc,
33
- type: user.type,
34
- profileUrl: user.uri,
35
- vanity: user.vanity,
36
- isBirthday: !!user.is_birthday
37
- };
38
- });
39
- }
40
-
41
- module.exports = function (defaultFuncs, api, ctx) {
42
- return function getFriendsList(callback) {
43
- let resolveFunc = function () { };
44
- let rejectFunc = function () { };
45
- const returnPromise = new Promise(function (resolve, reject) {
46
- resolveFunc = resolve;
47
- rejectFunc = reject;
48
- });
49
-
50
- if (!callback) {
51
- callback = function (err, friendList) {
52
- if (err) {
53
- return rejectFunc(err);
54
- }
55
- resolveFunc(friendList);
56
- };
57
- }
58
-
59
- defaultFuncs
60
- .postFormData(
61
- "https://www.facebook.com/chat/user_info_all",
62
- ctx.jar,
63
- {},
64
- { viewer: ctx.i_userID || ctx.userID }
65
- )
66
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
67
- .then(function (resData) {
68
- if (!resData) {
69
- throw { error: "getFriendsList returned empty object." };
70
- }
71
- if (resData.error) {
72
- throw resData;
73
- }
74
- callback(null, formatData(resData.payload));
75
- })
76
- .catch(function (err) {
77
- log.error("getFriendsList", err);
78
- return callback(err);
79
- });
80
-
81
- return returnPromise;
82
- };
83
- };